@mediusinc/mng-commons 3.0.0-rc.1 → 3.0.0-rc.10

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.
Files changed (136) hide show
  1. package/README.md +8 -7
  2. package/assets/i18n/en.json +5 -1
  3. package/assets/i18n/sl.json +5 -1
  4. package/dev-scripts/version-info.js +13 -6
  5. package/esm2022/index.mjs +3 -1
  6. package/esm2022/lib/api/utils/object-serializer.util.mjs +11 -4
  7. package/esm2022/lib/components/action/action.component.mjs +18 -6
  8. package/esm2022/lib/components/action/editor/action-editor.component.mjs +83 -18
  9. package/esm2022/lib/components/action/models/action-execution.model.mjs +14 -37
  10. package/esm2022/lib/components/action/route/action-route.component.mjs +9 -2
  11. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +18 -5
  12. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +21 -8
  13. package/esm2022/lib/components/form/editor/form-editor.component.mjs +9 -8
  14. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +22 -4
  15. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +43 -15
  16. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +11 -4
  17. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +8 -6
  18. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +16 -7
  19. package/esm2022/lib/components/form/models/field-action-context.model.mjs +1 -1
  20. package/esm2022/lib/components/form/models/index.mjs +2 -1
  21. package/esm2022/lib/components/tableview/table/table.component.mjs +57 -55
  22. package/esm2022/lib/descriptors/action/action-button.descriptor.mjs +10 -2
  23. package/esm2022/lib/descriptors/action/action.descriptor.mjs +19 -8
  24. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +3 -3
  25. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +13 -4
  26. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +7 -6
  27. package/esm2022/lib/descriptors/table/column.descriptor.mjs +3 -3
  28. package/esm2022/lib/descriptors/table/table.descriptor.mjs +35 -4
  29. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +3 -3
  30. package/esm2022/lib/error/error.handler.mjs +20 -0
  31. package/esm2022/lib/error/index.mjs +2 -0
  32. package/esm2022/lib/guards/index.mjs +2 -0
  33. package/esm2022/lib/guards/unsaved-changes.guard.mjs +4 -0
  34. package/esm2022/lib/models/action-editor.model.mjs +2 -0
  35. package/esm2022/lib/models/can-component-deactivate.model.mjs +2 -0
  36. package/esm2022/lib/models/config.model.mjs +1 -1
  37. package/esm2022/lib/models/error.model.mjs +44 -2
  38. package/esm2022/lib/models/index.mjs +4 -2
  39. package/esm2022/lib/models/log.model.mjs +10 -0
  40. package/esm2022/lib/models/version.model.mjs +1 -1
  41. package/esm2022/lib/pipes/json-path.pipe.mjs +8 -4
  42. package/esm2022/lib/provide-commons.mjs +22 -16
  43. package/esm2022/lib/router/route-builder.mjs +4 -4
  44. package/esm2022/lib/router/routes-builder.mjs +3 -3
  45. package/esm2022/lib/router/tableview-route-builder.mjs +4 -1
  46. package/esm2022/lib/security/authorization.service.mjs +5 -4
  47. package/esm2022/lib/security/authorization.util.mjs +3 -3
  48. package/esm2022/lib/services/action-error-mapper.service.mjs +20 -0
  49. package/esm2022/lib/services/action-executor.service.mjs +97 -57
  50. package/esm2022/lib/services/commons.service.mjs +16 -25
  51. package/esm2022/lib/services/configuration.service.mjs +56 -32
  52. package/esm2022/lib/services/index.mjs +4 -2
  53. package/esm2022/lib/services/internal/commons-init.service.mjs +49 -23
  54. package/esm2022/lib/services/log-publisher-console.service.mjs +40 -0
  55. package/esm2022/lib/services/logger.service.mjs +130 -0
  56. package/esm2022/lib/services/providers/index.mjs +1 -2
  57. package/esm2022/lib/services/router.service.mjs +106 -25
  58. package/esm2022/lib/services/tokens/index.mjs +2 -1
  59. package/esm2022/lib/services/tokens/log-publisher.token.mjs +3 -0
  60. package/esm2022/lib/services/version.service.mjs +7 -2
  61. package/esm2022/lib/utils/action-data-provider.util.mjs +7 -7
  62. package/esm2022/lib/utils/editor-formly.util.mjs +2 -1
  63. package/esm2022/lib/utils/error.util.mjs +247 -0
  64. package/esm2022/lib/utils/i18n.util.mjs +7 -9
  65. package/esm2022/lib/utils/index.mjs +2 -1
  66. package/esm2022/lib/utils/notification.util.mjs +3 -2
  67. package/esm2022/lib/utils/object.util.mjs +32 -5
  68. package/esm2022/lib/utils/route.util.mjs +3 -3
  69. package/esm2022/lib/utils/string.util.mjs +33 -2
  70. package/esm2022/lib/utils/tableview.util.mjs +3 -3
  71. package/esm2022/lib/utils/type.util.mjs +5 -5
  72. package/fesm2022/mediusinc-mng-commons.mjs +4352 -3484
  73. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  74. package/index.d.ts +1 -0
  75. package/lib/api/utils/object-serializer.util.d.ts +1 -0
  76. package/lib/components/action/action.component.d.ts +1 -0
  77. package/lib/components/action/editor/action-editor.component.d.ts +17 -6
  78. package/lib/components/action/models/action-execution.model.d.ts +6 -4
  79. package/lib/components/action/route/action-route.component.d.ts +4 -1
  80. package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -0
  81. package/lib/components/form/dropdown/dropdown.component.d.ts +1 -0
  82. package/lib/components/form/editor/form-editor.component.d.ts +1 -0
  83. package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +3 -0
  84. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +2 -0
  85. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +1 -0
  86. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +1 -0
  87. package/lib/components/form/models/field-action-context.model.d.ts +7 -0
  88. package/lib/components/form/models/index.d.ts +1 -0
  89. package/lib/components/tableview/table/table.component.d.ts +2 -0
  90. package/lib/descriptors/action/action-button.descriptor.d.ts +4 -1
  91. package/lib/descriptors/action/action.descriptor.d.ts +3 -0
  92. package/lib/descriptors/editor/field.descriptor.d.ts +10 -8
  93. package/lib/descriptors/table/column.descriptor.d.ts +1 -1
  94. package/lib/descriptors/table/table.descriptor.d.ts +26 -3
  95. package/lib/error/error.handler.d.ts +6 -0
  96. package/lib/error/index.d.ts +1 -0
  97. package/lib/guards/index.d.ts +1 -0
  98. package/lib/guards/unsaved-changes.guard.d.ts +3 -0
  99. package/lib/models/action-editor.model.d.ts +4 -0
  100. package/lib/models/can-component-deactivate.model.d.ts +4 -0
  101. package/lib/models/config.model.d.ts +2 -1
  102. package/lib/models/error.model.d.ts +44 -8
  103. package/lib/models/index.d.ts +3 -1
  104. package/lib/models/log.model.d.ts +40 -0
  105. package/lib/models/version.model.d.ts +1 -1
  106. package/lib/pipes/json-path.pipe.d.ts +1 -0
  107. package/lib/security/authorization.service.d.ts +1 -0
  108. package/lib/services/action-error-mapper.service.d.ts +18 -0
  109. package/lib/services/action-executor.service.d.ts +12 -6
  110. package/lib/services/commons.service.d.ts +9 -14
  111. package/lib/services/configuration.service.d.ts +13 -5
  112. package/lib/services/index.d.ts +3 -1
  113. package/lib/services/internal/commons-init.service.d.ts +8 -8
  114. package/lib/services/log-publisher-console.service.d.ts +4 -0
  115. package/lib/services/logger.service.d.ts +33 -0
  116. package/lib/services/providers/index.d.ts +0 -1
  117. package/lib/services/router.service.d.ts +17 -2
  118. package/lib/services/tokens/index.d.ts +1 -0
  119. package/lib/services/tokens/log-publisher.token.d.ts +3 -0
  120. package/lib/services/version.service.d.ts +1 -0
  121. package/lib/utils/error.util.d.ts +116 -0
  122. package/lib/utils/i18n.util.d.ts +3 -3
  123. package/lib/utils/index.d.ts +1 -0
  124. package/lib/utils/notification.util.d.ts +2 -2
  125. package/lib/utils/object.util.d.ts +6 -4
  126. package/lib/utils/string.util.d.ts +5 -0
  127. package/package.json +4 -1
  128. package/scss/common/theme/designer/_components.scss +1 -1
  129. package/scss/mng-overrides/_theme_dialog.scss +7 -0
  130. package/scss/mng-overrides/_theme_tableview.scss +15 -0
  131. package/esm2022/lib/models/error-internal.model.mjs +0 -27
  132. package/esm2022/lib/services/error-mapper.service.mjs +0 -14
  133. package/esm2022/lib/services/providers/config-service.provider.mjs +0 -31
  134. package/lib/models/error-internal.model.d.ts +0 -29
  135. package/lib/services/error-mapper.service.d.ts +0 -7
  136. package/lib/services/providers/config-service.provider.d.ts +0 -6
@@ -1,37 +1,68 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
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_LOG_PUBLISHERS, 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(translate, configurationService, mngCommons, mngRouter, commonsInitializers) {
12
- this.translate = translate;
13
- this.configurationService = configurationService;
14
- this.mngCommons = mngCommons;
15
- this.mngRouter = mngRouter;
16
- this.commonsInitializers = commonsInitializers;
9
+ constructor() {
10
+ this.httpClient = inject(HttpClient);
11
+ this.logger = inject(MngLoggerService);
12
+ this.logPublishers = inject(MNG_LOG_PUBLISHERS, { optional: true });
13
+ this.config = inject(MngConfigurationService);
14
+ this.mngCommons = inject(MngCommonsService);
15
+ this.mngRouter = inject(MngRouterService);
16
+ this.moduleConfig = inject(MNG_MODULE_CONFIG_IT, { optional: true });
17
+ this.commonsInitializers = inject(MNG_COMMONS_INITIALIZER_IT, { optional: true });
17
18
  this.isInitialized = false;
18
19
  }
19
20
  initialize() {
20
21
  if (this.isInitialized) {
21
22
  return of(void 0);
22
23
  }
24
+ this.isInitialized = true;
25
+ MngLoggerService.configure({ timestampFormat: this.moduleConfig?.log?.timestampFormat });
26
+ const ctxLogger = this.logger.create('MngCommonsInitService');
27
+ ctxLogger.debug('Commons initialization is starting');
28
+ // init router
23
29
  this.mngRouter.initialize();
24
- return this.configurationService.loadJsonConfigurations().pipe(mergeMap(() => {
30
+ // init configurations with settings from module config
31
+ this.config.init(this.httpClient, this.logger);
32
+ this.config.addModuleConfigSource(this.moduleConfig ?? undefined);
33
+ if (this.moduleConfig?.configuration?.projectEnvironment) {
34
+ this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);
35
+ }
36
+ // init configurations with settings from module config for json source
37
+ if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {
38
+ const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;
39
+ const jsonSource = this.moduleConfig?.configuration?.jsonSource;
40
+ if (!jsonSource) {
41
+ this.config.addJsonSource({ enableEnvProd: jsonSourceEnableEnvProd });
42
+ }
43
+ else if (Array.isArray(jsonSource)) {
44
+ jsonSource.forEach(source => this.config.addJsonSource({ url: source, enableEnvProd: jsonSourceEnableEnvProd }));
45
+ }
46
+ else {
47
+ this.config.addJsonSource({ url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd });
48
+ }
49
+ }
50
+ return this.config.loadJsonConfigurations().pipe(mergeMap(() => {
51
+ // init logger
52
+ MngLoggerService.init(this.config, this.logPublishers ?? []);
25
53
  if (this.commonsInitializers) {
54
+ ctxLogger.debug('Project initializers are being initialized');
26
55
  return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
27
56
  }
28
57
  else {
29
58
  return of(true);
30
59
  }
31
- }), map(() => this.mngCommons.reset()));
32
- this.isInitialized = true;
60
+ }), map(() => {
61
+ ctxLogger.debug('Commons initialization is finished');
62
+ return this.mngCommons.reset();
63
+ }));
33
64
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, deps: [{ token: i1.TranslateService }, { token: i2.MngConfigurationService }, { token: i2.MngCommonsService }, { token: i2.MngRouterService }, { token: MNG_COMMONS_INITIALIZER_IT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
66
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, providedIn: 'root' }); }
36
67
  }
37
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MngCommonsInitService, decorators: [{
@@ -39,10 +70,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
39
70
  args: [{
40
71
  providedIn: 'root'
41
72
  }]
42
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.MngConfigurationService }, { type: i2.MngCommonsService }, { type: i2.MngRouterService }, { type: undefined, decorators: [{
43
- type: Inject,
44
- args: [MNG_COMMONS_INITIALIZER_IT]
45
- }, {
46
- type: Optional
47
- }] }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUNqRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7QUFLckQsTUFBTSxPQUFPLHFCQUFxQjtJQUc5QixZQUNZLFNBQTJCLEVBQzNCLG9CQUE2QyxFQUM3QyxVQUE2QixFQUM3QixTQUEyQixFQUM4QixtQkFBNkQ7UUFKdEgsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUM4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTBDO1FBUDFILGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBUTNCLENBQUM7SUFFRyxVQUFVO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTVCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUMxRCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDeEY7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNyQyxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQzs4R0E5QlEscUJBQXFCLDBKQVFsQiwwQkFBMEI7a0hBUjdCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFTUSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG1lcmdlTWFwLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlLCBNbmdDb25maWd1cmF0aW9uU2VydmljZSwgTW5nUm91dGVyU2VydmljZX0gZnJvbSAnLi4vJztcbmltcG9ydCB7TU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVR9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQ29tbW9uc0luaXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW5nQ29tbW9uczogTW5nQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW5nUm91dGVyOiBNbmdSb3V0ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE1OR19DT01NT05TX0lOSVRJQUxJWkVSX0lUKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNJbml0aWFsaXplcnM6IFJlYWRvbmx5QXJyYXk8KCkgPT4gT2JzZXJ2YWJsZTx1bmtub3duPj5cbiAgICApIHt9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1uZ1JvdXRlci5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UubG9hZEpzb25Db25maWd1cmF0aW9ucygpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubW5nQ29tbW9ucy5yZXNldCgpKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxufVxuIl19
73
+ }] });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLEtBQUssQ0FBQztBQUNuRyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBSy9GLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM3RCxXQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDekMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzlELHdCQUFtQixHQUFHLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRXBGLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBc0RqQztJQXBEVSxVQUFVO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUV2RixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlELFNBQVMsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUV0RCxjQUFjO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUU1Qix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUU7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3hGO1FBRUQsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsdUJBQXVCLElBQUksS0FBSyxDQUFDO1lBQ25HLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQztZQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUMsYUFBYSxFQUFFLHVCQUF1QixFQUFDLENBQUMsQ0FBQzthQUN2RTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ2xDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xIO2lCQUFNO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUMsQ0FBQyxDQUFDO2FBQ3hGO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQzVDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVixjQUFjO1lBQ2QsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUU3RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDMUIsU0FBUyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2dCQUM5RCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3hGO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OEdBL0RRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtZXJnZU1hcCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdDb21tb25zU2VydmljZSwgTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsIE1uZ0xvZ2dlclNlcnZpY2UsIE1uZ1JvdXRlclNlcnZpY2V9IGZyb20gJy4uLyc7XG5pbXBvcnQge01OR19DT01NT05TX0lOSVRJQUxJWkVSX0lULCBNTkdfTE9HX1BVQkxJU0hFUlMsIE1OR19NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0NvbW1vbnNJbml0U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KE1uZ0xvZ2dlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nUHVibGlzaGVycyA9IGluamVjdChNTkdfTE9HX1BVQkxJU0hFUlMsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1uZ0NvbW1vbnMgPSBpbmplY3QoTW5nQ29tbW9uc1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW5nUm91dGVyID0gaW5qZWN0KE1uZ1JvdXRlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KE1OR19NT0RVTEVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNJbml0aWFsaXplcnMgPSBpbmplY3QoTU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLmNvbmZpZ3VyZSh7dGltZXN0YW1wRm9ybWF0OiB0aGlzLm1vZHVsZUNvbmZpZz8ubG9nPy50aW1lc3RhbXBGb3JtYXR9KTtcblxuICAgICAgICBjb25zdCBjdHhMb2dnZXIgPSB0aGlzLmxvZ2dlci5jcmVhdGUoJ01uZ0NvbW1vbnNJbml0U2VydmljZScpO1xuICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgc3RhcnRpbmcnKTtcblxuICAgICAgICAvLyBpbml0IHJvdXRlclxuICAgICAgICB0aGlzLm1uZ1JvdXRlci5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgLy8gaW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIHNldHRpbmdzIGZyb20gbW9kdWxlIGNvbmZpZ1xuICAgICAgICB0aGlzLmNvbmZpZy5pbml0KHRoaXMuaHR0cENsaWVudCwgdGhpcy5sb2dnZXIpO1xuICAgICAgICB0aGlzLmNvbmZpZy5hZGRNb2R1bGVDb25maWdTb3VyY2UodGhpcy5tb2R1bGVDb25maWcgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5wcm9qZWN0RW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEVudmlyb25tZW50U291cmNlKHRoaXMubW9kdWxlQ29uZmlnLmNvbmZpZ3VyYXRpb24ucHJvamVjdEVudmlyb25tZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluaXQgY29uZmlndXJhdGlvbnMgd2l0aCBzZXR0aW5ncyBmcm9tIG1vZHVsZSBjb25maWcgZm9yIGpzb24gc291cmNlXG4gICAgICAgIGlmICghKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5za2lwSnNvblNvdXJjZUluaXQgPz8gZmFsc2UpKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uU291cmNlRW5hYmxlRW52UHJvZCA9IHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5qc29uU291cmNlRW5hYmxlRW52UHJvZCA/PyBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGpzb25Tb3VyY2UgPSB0aGlzLm1vZHVsZUNvbmZpZz8uY29uZmlndXJhdGlvbj8uanNvblNvdXJjZTtcbiAgICAgICAgICAgIGlmICghanNvblNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe2VuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvblNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICBqc29uU291cmNlLmZvckVhY2goc291cmNlID0+IHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe3VybDogc291cmNlLCBlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7dXJsOiBqc29uU291cmNlLCBlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmxvYWRKc29uQ29uZmlndXJhdGlvbnMoKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGluaXQgbG9nZ2VyXG4gICAgICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5pbml0KHRoaXMuY29uZmlnLCB0aGlzLmxvZ1B1Ymxpc2hlcnMgPz8gW10pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ1Byb2plY3QgaW5pdGlhbGl6ZXJzIGFyZSBiZWluZyBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoZWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ /* eslint-disable no-console */
2
+ import { LogLevelEnum } from '../models';
3
+ import { ErrorUtil } from '../utils';
4
+ export class MngLogPublisherConsoleService {
5
+ addEntry(entry) {
6
+ let prefix = `${entry.timestampFormatted}`;
7
+ if (entry.category)
8
+ prefix += ` [${entry.category}]`;
9
+ prefix += ':';
10
+ const message = `${entry.message}${entry.messageDetails ? `\n${entry.messageDetails}` : ''}`;
11
+ const logParams = [prefix, message];
12
+ if (entry.error) {
13
+ logParams.push(`\n${ErrorUtil.getErrorName(entry.error)}:`, entry.error);
14
+ }
15
+ if (entry.data?.length) {
16
+ logParams.push(`\nData:\n`, ...entry.data);
17
+ }
18
+ switch (entry.level) {
19
+ case LogLevelEnum.Trace:
20
+ console.trace(...logParams);
21
+ break;
22
+ case LogLevelEnum.Debug:
23
+ console.debug(...logParams);
24
+ break;
25
+ case LogLevelEnum.Log:
26
+ console.log(...logParams);
27
+ break;
28
+ case LogLevelEnum.Info:
29
+ console.info(...logParams);
30
+ break;
31
+ case LogLevelEnum.Warning:
32
+ console.warn(...logParams);
33
+ break;
34
+ case LogLevelEnum.Error:
35
+ console.error(...logParams);
36
+ break;
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXB1Ymxpc2hlci1jb25zb2xlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZy1wdWJsaXNoZXItY29uc29sZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQW1CLFlBQVksRUFBYyxNQUFNLFdBQVcsQ0FBQztBQUN0RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRW5DLE1BQU0sT0FBTyw2QkFBNkI7SUFDdEMsUUFBUSxDQUFDLEtBQWtCO1FBQ3ZCLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0MsSUFBSSxLQUFLLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxDQUFDO1FBRWQsTUFBTSxPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3RixNQUFNLFNBQVMsR0FBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUU7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlDO1FBRUQsUUFBUSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2pCLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLEdBQUc7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLElBQUk7Z0JBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLE9BQU87Z0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNWLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtTQUNiO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtJTW5nTG9nUHVibGlzaGVyLCBMb2dMZXZlbEVudW0sIE1uZ0xvZ0VudHJ5fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtFcnJvclV0aWx9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIE1uZ0xvZ1B1Ymxpc2hlckNvbnNvbGVTZXJ2aWNlIGltcGxlbWVudHMgSU1uZ0xvZ1B1Ymxpc2hlciB7XG4gICAgYWRkRW50cnkoZW50cnk6IE1uZ0xvZ0VudHJ5KTogdm9pZCB7XG4gICAgICAgIGxldCBwcmVmaXggPSBgJHtlbnRyeS50aW1lc3RhbXBGb3JtYXR0ZWR9YDtcbiAgICAgICAgaWYgKGVudHJ5LmNhdGVnb3J5KSBwcmVmaXggKz0gYCBbJHtlbnRyeS5jYXRlZ29yeX1dYDtcbiAgICAgICAgcHJlZml4ICs9ICc6JztcblxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7ZW50cnkubWVzc2FnZX0ke2VudHJ5Lm1lc3NhZ2VEZXRhaWxzID8gYFxcbiR7ZW50cnkubWVzc2FnZURldGFpbHN9YCA6ICcnfWA7XG4gICAgICAgIGNvbnN0IGxvZ1BhcmFtczogYW55W10gPSBbcHJlZml4LCBtZXNzYWdlXTtcbiAgICAgICAgaWYgKGVudHJ5LmVycm9yKSB7XG4gICAgICAgICAgICBsb2dQYXJhbXMucHVzaChgXFxuJHtFcnJvclV0aWwuZ2V0RXJyb3JOYW1lKGVudHJ5LmVycm9yKX06YCwgZW50cnkuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS5kYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxvZ1BhcmFtcy5wdXNoKGBcXG5EYXRhOlxcbmAsIC4uLmVudHJ5LmRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChlbnRyeS5sZXZlbCkge1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uVHJhY2U6XG4gICAgICAgICAgICAgICAgY29uc29sZS50cmFjZSguLi5sb2dQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uRGVidWc6XG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyguLi5sb2dQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uTG9nOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKC4uLmxvZ1BhcmFtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExvZ0xldmVsRW51bS5JbmZvOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyguLi5sb2dQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMb2dMZXZlbEVudW0uV2FybmluZzpcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oLi4ubG9nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWxFbnVtLkVycm9yOlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoLi4ubG9nUGFyYW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,130 @@
1
+ import { DatePipe } from '@angular/common';
2
+ import { LogLevelEnum, MngInternalError } from '../models';
3
+ import { DateUtil } from '../utils';
4
+ export class MngLoggerService {
5
+ static { this._instance = new MngLoggerService(); }
6
+ static { this._isInit = false; }
7
+ static { this._publishers = []; }
8
+ static { this._entriesBuffer = []; }
9
+ static { this._categoryInstances = {}; }
10
+ static { this._timestampFormat = 'yyyy-MM-dd HH:mm:ss.SSS'; }
11
+ constructor() {
12
+ // Temporary settings that cover logging calls before initialisation
13
+ this.defaultLogLevel = LogLevelEnum.Info;
14
+ this.datePipe = new DatePipe('en-US');
15
+ // empty
16
+ }
17
+ static get() {
18
+ return MngLoggerService._instance;
19
+ }
20
+ static configure(config) {
21
+ if (config.timestampFormat) {
22
+ MngLoggerService._timestampFormat = config.timestampFormat;
23
+ }
24
+ }
25
+ static init(configurationService, publishers) {
26
+ if (MngLoggerService._isInit) {
27
+ return;
28
+ }
29
+ MngLoggerService._configurationService = configurationService;
30
+ MngLoggerService._publishers = publishers;
31
+ MngLoggerService._isInit = true;
32
+ MngLoggerService._flushBuffer();
33
+ }
34
+ static _flushBuffer() {
35
+ if (!MngLoggerService._isInit) {
36
+ return;
37
+ }
38
+ MngLoggerService._entriesBuffer.forEach(e => this._instance._log(e));
39
+ MngLoggerService._entriesBuffer = [];
40
+ }
41
+ static create(category) {
42
+ return MngLoggerService._instance.create(category);
43
+ }
44
+ create(category) {
45
+ if (this.category) {
46
+ throw new MngInternalError(`Cannot create logger with category inside another category (${this.category}). Must create logger on root.`);
47
+ }
48
+ if (MngLoggerService._categoryInstances[category]) {
49
+ return MngLoggerService._categoryInstances[category];
50
+ }
51
+ const logger = new MngLoggerService();
52
+ logger.category = category;
53
+ MngLoggerService._categoryInstances[category] = logger;
54
+ return logger;
55
+ }
56
+ _processLog(msgOrError, logLevel, category = undefined, data) {
57
+ const [timestamp, timestampFormatted] = [...this._getTimestamps()];
58
+ const logEntry = {
59
+ level: logLevel,
60
+ message: typeof msgOrError === 'string' ? msgOrError : msgOrError.message,
61
+ data: data,
62
+ category: this.category ?? category,
63
+ timestamp: timestamp,
64
+ timestampFormatted: timestampFormatted ?? undefined
65
+ };
66
+ if (msgOrError instanceof Error) {
67
+ // set error from message param
68
+ logEntry.error = msgOrError;
69
+ }
70
+ else if (data?.length && data[0] instanceof Error) {
71
+ // if first data is error, also consider as error
72
+ logEntry.error = data[0];
73
+ logEntry.data = data.splice(1);
74
+ }
75
+ this._log(logEntry);
76
+ }
77
+ _getTimestamps() {
78
+ const timestamp = new Date();
79
+ const timestampFormatted = this.datePipe.transform(timestamp, MngLoggerService._timestampFormat) ?? DateUtil.toIsoString(timestamp, false, true, true);
80
+ return [timestamp, timestampFormatted];
81
+ }
82
+ _log(log) {
83
+ if (!MngLoggerService._isInit) {
84
+ // add to buffer
85
+ MngLoggerService._entriesBuffer.push(log);
86
+ return;
87
+ }
88
+ const logConfig = (MngLoggerService._configurationService?.getConfigValue)?.('log');
89
+ if ((this.category && log.level < (logConfig?.category?.[this.category]?.level ?? logConfig?.level ?? this.defaultLogLevel)) ||
90
+ (!this.category && log.level < (logConfig?.level ?? this.defaultLogLevel))) {
91
+ return;
92
+ }
93
+ if (logConfig?.timestampFormat) {
94
+ log.timestampFormatted = this.datePipe.transform(log.timestamp, logConfig.timestampFormat) ?? undefined;
95
+ }
96
+ MngLoggerService._publishers.forEach(p => p.addEntry(log));
97
+ }
98
+ trace(msgOrError, ...data) {
99
+ this._processLog(msgOrError, LogLevelEnum.Trace, undefined, data);
100
+ }
101
+ debug(msgOrError, ...data) {
102
+ this._processLog(msgOrError, LogLevelEnum.Debug, undefined, data);
103
+ }
104
+ log(msgOrError, logLevel = LogLevelEnum.Log, category = undefined, ...data) {
105
+ this._processLog(msgOrError, logLevel, category, data);
106
+ }
107
+ logEntry(logEntry) {
108
+ const [timestamp, timestampFormatted] = [...this._getTimestamps()];
109
+ const logEntryFinal = {
110
+ timestamp: timestamp,
111
+ timestampFormatted: timestampFormatted ?? undefined,
112
+ category: this.category ?? logEntry.category,
113
+ message: '',
114
+ messageDetails: logEntry.messageDetails,
115
+ level: LogLevelEnum.Log,
116
+ ...logEntry
117
+ };
118
+ this._log(logEntryFinal);
119
+ }
120
+ info(msgOrError, ...data) {
121
+ this._processLog(msgOrError, LogLevelEnum.Info, undefined, data);
122
+ }
123
+ warn(msgOrError, ...data) {
124
+ this._processLog(msgOrError, LogLevelEnum.Warning, undefined, data);
125
+ }
126
+ error(msgOrError, ...data) {
127
+ this._processLog(msgOrError, LogLevelEnum.Error, undefined, data);
128
+ }
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQXNDLFlBQVksRUFBRSxnQkFBZ0IsRUFBNEIsTUFBTSxXQUFXLENBQUM7QUFDekgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUdsQyxNQUFNLE9BQU8sZ0JBQWdCO2FBQ1YsY0FBUyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLEFBQTNDLENBQTRDO2FBQ3JELFlBQU8sR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUVoQixnQkFBVyxHQUF1QixFQUFFLEFBQXpCLENBQTBCO2FBQ3JDLG1CQUFjLEdBQWtCLEVBQUUsQUFBcEIsQ0FBcUI7YUFDbkMsdUJBQWtCLEdBQXFDLEVBQUUsQUFBdkMsQ0FBd0M7YUFDMUQscUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBUTVEO1FBSkEsb0VBQW9FO1FBQ25ELG9CQUFlLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDM0QsYUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBR3JDLFFBQVE7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFrQztRQUN0RCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDeEIsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUE2QyxFQUFFLFVBQThCO1FBQzVGLElBQUksZ0JBQWdCLENBQUMs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QztJQUNyRSxDQUFDO0lBRU0sSUFBSSxDQUFDLFVBQTBCLEVBQUUsR0FBRyxJQUFXO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBMEIsRUFBRSxHQUFHLElBQVc7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7SU1uZ0xvZ1B1Ymxpc2hlciwgSU1uZ0xvZ2dlclNlcnZpY2UsIExvZ0xldmVsRW51bSwgTW5nSW50ZXJuYWxFcnJvciwgTW5nTG9nQ29uZmlnLCBNbmdMb2dFbnRyeX0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7RGF0ZVV0aWx9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7TW5nQ29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIE1uZ0xvZ2dlclNlcnZpY2UgaW1wbGVtZW50cyBJTW5nTG9nZ2VyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBNbmdMb2dnZXJTZXJ2aWNlID0gbmV3IE1uZ0xvZ2dlclNlcnZpY2UoKTtcbiAgICBwcml2YXRlIHN0YXRpYyBfaXNJbml0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlPzogTW5nQ29uZmlndXJhdGlvblNlcnZpY2U7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX3B1Ymxpc2hlcnM6IElNbmdMb2dQdWJsaXNoZXJbXSA9IFtdO1xuICAgIHByaXZhdGUgc3RhdGljIF9lbnRyaWVzQnVmZmVyOiBNbmdMb2dFbnRyeVtdID0gW107XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2NhdGVnb3J5SW5zdGFuY2VzOiBSZWNvcmQ8c3RyaW5nLCBNbmdMb2dnZXJTZXJ2aWNlPiA9IHt9O1xuICAgIHByaXZhdGUgc3RhdGljIF90aW1lc3RhbXBGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcy5TU1MnO1xuXG4gICAgcHJpdmF0ZSBjYXRlZ29yeT86IHN0cmluZztcblxuICAgIC8vIFRlbXBvcmFyeSBzZXR0aW5ncyB0aGF0IGNvdmVyIGxvZ2dpbmcgY2FsbHMgYmVmb3JlIGluaXRpYWxpc2F0aW9uXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TG9nTGV2ZWw6IExvZ0xldmVsRW51bSA9IExvZ0xldmVsRW51bS5JbmZvO1xuICAgIHByaXZhdGUgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoJ2VuLVVTJyk7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBlbXB0eVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KCkge1xuICAgICAgICByZXR1cm4gTW5nTG9nZ2VyU2VydmljZS5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb25maWd1cmUoY29uZmlnOiB7dGltZXN0YW1wRm9ybWF0Pzogc3RyaW5nfSkge1xuICAgICAgICBpZiAoY29uZmlnLnRpbWVzdGFtcEZvcm1hdCkge1xuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fdGltZXN0YW1wRm9ybWF0ID0gY29uZmlnLnRpbWVzdGFtcEZvcm1hdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdChjb25maWd1cmF0aW9uU2VydmljZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsIHB1Ymxpc2hlcnM6IElNbmdMb2dQdWJsaXNoZXJbXSkge1xuICAgICAgICBpZiAoTW5nTG9nZ2VyU2VydmljZS5faXNJbml0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9jb25maWd1cmF0aW9uU2VydmljZSA9IGNvbmZpZ3VyYXRpb25TZXJ2aWNlO1xuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9wdWJsaXNoZXJzID0gcHVibGlzaGVycztcblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9pc0luaXQgPSB0cnVlO1xuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9mbHVzaEJ1ZmZlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9mbHVzaEJ1ZmZlcigpIHtcbiAgICAgICAgaWYgKCFNbmdMb2dnZXJTZXJ2aWNlLl9pc0luaXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9lbnRyaWVzQnVmZmVyLmZvckVhY2goZSA9PiB0aGlzLl9pbnN0YW5jZS5fbG9nKGUpKTtcbiAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZW50cmllc0J1ZmZlciA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKGNhdGVnb3J5OiBzdHJpbmcpOiBNbmdMb2dnZXJTZXJ2aWNlIHtcbiAgICAgICAgcmV0dXJuIE1uZ0xvZ2dlclNlcnZpY2UuX2luc3RhbmNlLmNyZWF0ZShjYXRlZ29yeSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShjYXRlZ29yeTogc3RyaW5nKTogTW5nTG9nZ2VyU2VydmljZSB7XG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3J5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcihgQ2Fubm90IGNyZWF0ZSBsb2dnZXIgd2l0aCBjYXRlZ29yeSBpbnNpZGUgYW5vdGhlciBjYXRlZ29yeSAoJHt0aGlzLmNhdGVnb3J5fSkuIE11c3QgY3JlYXRlIGxvZ2dlciBvbiByb290LmApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNbmdMb2dnZXJTZXJ2aWNlLl9jYXRlZ29yeUluc3RhbmNlc1tjYXRlZ29yeV0pIHtcbiAgICAgICAgICAgIHJldHVybiBNbmdMb2dnZXJTZXJ2aWNlLl9jYXRlZ29yeUluc3RhbmNlc1tjYXRlZ29yeV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW5nTG9nZ2VyU2VydmljZSgpO1xuICAgICAgICBsb2dnZXIuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLl9jYXRlZ29yeUluc3RhbmNlc1tjYXRlZ29yeV0gPSBsb2dnZXI7XG5cbiAgICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcm9jZXNzTG9nKG1zZ09yRXJyb3I6IHN0cmluZyB8IEVycm9yLCBsb2dMZXZlbDogTG9nTGV2ZWxFbnVtLCBjYXRlZ29yeTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLCBkYXRhPzogYW55W10pIHtcbiAgICAgICAgY29uc3QgW3RpbWVzdGFtcCwgdGltZXN0YW1wRm9ybWF0dGVkXSA9IFsuLi50aGlzLl9nZXRUaW1lc3RhbXBzKCldO1xuXG4gICAgICAgIGNvbnN0IGxvZ0VudHJ5ID0gPE1uZ0xvZ0VudHJ5PntcbiAgICAgICAgICAgIGxldmVsOiBsb2dMZXZlbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHR5cGVvZiBtc2dPckVycm9yID09PSAnc3RyaW5nJyA/IG1zZ09yRXJyb3IgOiBtc2dPckVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnkgPz8gY2F0ZWdvcnksXG4gICAgICAgICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcCxcbiAgICAgICAgICAgIHRpbWVzdGFtcEZvcm1hdHRlZDogdGltZXN0YW1wRm9ybWF0dGVkID8/IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChtc2dPckVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIC8vIHNldCBlcnJvciBmcm9tIG1lc3NhZ2UgcGFyYW1cbiAgICAgICAgICAgIGxvZ0VudHJ5LmVycm9yID0gbXNnT3JFcnJvcjtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhPy5sZW5ndGggJiYgZGF0YVswXSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAvLyBpZiBmaXJzdCBkYXRhIGlzIGVycm9yLCBhbHNvIGNvbnNpZGVyIGFzIGVycm9yXG4gICAgICAgICAgICBsb2dFbnRyeS5lcnJvciA9IGRhdGFbMF07XG4gICAgICAgICAgICBsb2dFbnRyeS5kYXRhID0gZGF0YS5zcGxpY2UoMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2cobG9nRW50cnkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRpbWVzdGFtcHMoKTogW0RhdGUsIHN0cmluZyB8IG51bGxdIHtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wRm9ybWF0dGVkID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGltZXN0YW1wLCBNbmdMb2dnZXJTZXJ2aWNlLl90aW1lc3RhbXBGb3JtYXQpID8/IERhdGVVdGlsLnRvSXNvU3RyaW5nKHRpbWVzdGFtcCwgZmFsc2UsIHRydWUsIHRydWUpO1xuICAgICAgICByZXR1cm4gW3RpbWVzdGFtcCwgdGltZXN0YW1wRm9ybWF0dGVkXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9sb2cobG9nOiBNbmdMb2dFbnRyeSkge1xuICAgICAgICBpZiAoIU1uZ0xvZ2dlclNlcnZpY2UuX2lzSW5pdCkge1xuICAgICAgICAgICAgLy8gYWRkIHRvIGJ1ZmZlclxuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5fZW50cmllc0J1ZmZlci5wdXNoKGxvZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2dDb25maWcgPSBNbmdMb2dnZXJTZXJ2aWNlLl9jb25maWd1cmF0aW9uU2VydmljZT8uZ2V0Q29uZmlnVmFsdWU8TW5nTG9nQ29uZmlnPj8uKCdsb2cnKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRoaXMuY2F0ZWdvcnkgJiYgbG9nLmxldmVsIDwgKGxvZ0NvbmZpZz8uY2F0ZWdvcnk/Llt0aGlzLmNhdGVnb3J5XT8ubGV2ZWwgPz8gbG9nQ29uZmlnPy5sZXZlbCA/PyB0aGlzLmRlZmF1bHRMb2dMZXZlbCkpIHx8XG4gICAgICAgICAgICAoIXRoaXMuY2F0ZWdvcnkgJiYgbG9nLmxldmVsIDwgKGxvZ0NvbmZpZz8ubGV2ZWwgPz8gdGhpcy5kZWZhdWx0TG9nTGV2ZWwpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2dDb25maWc/LnRpbWVzdGFtcEZvcm1hdCkge1xuICAgICAgICAgICAgbG9nLnRpbWVzdGFtcEZvcm1hdHRlZCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGxvZy50aW1lc3RhbXAsIGxvZ0NvbmZpZy50aW1lc3RhbXBGb3JtYXQpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIE1uZ0xvZ2dlclNlcnZpY2UuX3B1Ymxpc2hlcnMuZm9yRWFjaChwID0+IHAuYWRkRW50cnkobG9nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNlKG1zZ09yRXJyb3I6IHN0cmluZyB8IEVycm9yLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZ09yRXJyb3IsIExvZ0xldmVsRW51bS5UcmFjZSwgdW5kZWZpbmVkLCBkYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVidWcobXNnT3JFcnJvcjogc3RyaW5nIHwgRXJyb3IsIC4uLmRhdGE6IGFueVtdKSB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NMb2cobXNnT3JFcnJvciwgTG9nTGV2ZWxFbnVtLkRlYnVnLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2cobXNnT3JFcnJvcjogc3RyaW5nIHwgRXJyb3IsIGxvZ0xldmVsOiBMb2dMZXZlbEVudW0gPSBMb2dMZXZlbEVudW0uTG9nLCBjYXRlZ29yeTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZ09yRXJyb3IsIGxvZ0xldmVsLCBjYXRlZ29yeSwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ0VudHJ5PEUgZXh0ZW5kcyBQYXJ0aWFsPE1uZ0xvZ0VudHJ5Pj4obG9nRW50cnk6IEUpIHtcbiAgICAgICAgY29uc3QgW3RpbWVzdGFtcCwgdGltZXN0YW1wRm9ybWF0dGVkXSA9IFsuLi50aGlzLl9nZXRUaW1lc3RhbXBzKCldO1xuICAgICAgICBjb25zdCBsb2dFbnRyeUZpbmFsOiBNbmdMb2dFbnRyeSA9IHtcbiAgICAgICAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLFxuICAgICAgICAgICAgdGltZXN0YW1wRm9ybWF0dGVkOiB0aW1lc3RhbXBGb3JtYXR0ZWQgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnkgPz8gbG9nRW50cnkuY2F0ZWdvcnksXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIG1lc3NhZ2VEZXRhaWxzOiBsb2dFbnRyeS5tZXNzYWdlRGV0YWlscyxcbiAgICAgICAgICAgIGxldmVsOiBMb2dMZXZlbEVudW0uTG9nLFxuICAgICAgICAgICAgLi4ubG9nRW50cnlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fbG9nKGxvZ0VudHJ5RmluYWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbmZvKG1zZ09yRXJyb3I6IHN0cmluZyB8IEVycm9yLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZ09yRXJyb3IsIExvZ0xldmVsRW51bS5JbmZvLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1zZ09yRXJyb3I6IHN0cmluZyB8IEVycm9yLCAuLi5kYXRhOiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9wcm9jZXNzTG9nKG1zZ09yRXJyb3IsIExvZ0xldmVsRW51bS5XYXJuaW5nLCB1bmRlZmluZWQsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcnJvcihtc2dPckVycm9yOiBzdHJpbmcgfCBFcnJvciwgLi4uZGF0YTogYW55W10pIHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0xvZyhtc2dPckVycm9yLCBMb2dMZXZlbEVudW0uRXJyb3IsIHVuZGVmaW5lZCwgZGF0YSk7XG4gICAgfVxufVxuIl19
@@ -1,3 +1,2 @@
1
- export * from './config-service.provider';
2
1
  export * from './formly-config.provider';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbmZpZy1zZXJ2aWNlLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWx5LWNvbmZpZy5wcm92aWRlcic7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb3JtbHktY29uZmlnLnByb3ZpZGVyJztcbiJdfQ==
@@ -1,12 +1,16 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, inject } from '@angular/core';
2
2
  import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, RouteConfigLoadEnd, RouteConfigLoadStart, Router } from '@angular/router';
3
3
  import { ReplaySubject } from 'rxjs';
4
4
  import { first } from 'rxjs/operators';
5
+ import { MngLoggerService } from './logger.service';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/router";
7
8
  export class MngRouterService {
8
9
  constructor(router) {
9
10
  this.router = router;
11
+ this.logger = inject(MngLoggerService).create('MngRouterService');
12
+ this.routesLoadedPropKey = '_loadedRoutes';
13
+ this.currentNavigationModuleKeys = [];
10
14
  this.lazyLoadedRoutesConfig = {};
11
15
  }
12
16
  getRouteLoadedChildren(path) {
@@ -33,45 +37,122 @@ export class MngRouterService {
33
37
  }
34
38
  startNavigation(url) {
35
39
  this.currentNavigationPath = url.split('?')[0].split('#')[0];
36
- this.currentNavigationConfigModule = undefined;
37
- this.currentNavigationConfigLoaded = undefined;
40
+ this.currentNavigationModuleKeys = [];
38
41
  }
39
42
  finishNavigation() {
40
- if (this.currentNavigationConfigLoaded && this.currentNavigationConfigModule) {
41
- this.getLoadedRoutesFromRoute();
43
+ if (this.currentNavigationModuleKeys.length) {
44
+ this.currentNavigationModuleKeys.forEach(k => this.getLoadedRoutesFromRoute(k, true));
42
45
  }
43
46
  this.currentNavigationPath = undefined;
44
47
  }
45
48
  markNavigationConfigLoad(route, isEnd = false) {
46
- this.currentNavigationConfigLoaded = isEnd;
47
49
  let routePath = route.path ?? '';
48
50
  if (!routePath.startsWith('/'))
49
51
  routePath = `/${routePath}`;
50
- if (!this.currentNavigationConfigModule) {
51
- let moduleKey = routePath;
52
- const currentNavigationPathRoutePathIdx = this.currentNavigationPath?.indexOf(routePath) ?? -1;
53
- if (this.currentNavigationPath && currentNavigationPathRoutePathIdx >= 0) {
54
- moduleKey = this.currentNavigationPath.substring(0, currentNavigationPathRoutePathIdx + routePath.length);
55
- }
56
- this.currentNavigationConfigModule = moduleKey;
52
+ const currentNavigationPathRoutePathIdx = this.currentNavigationPath?.indexOf(routePath) ?? -1;
53
+ const moduleKey = this.currentNavigationPath?.substring(0, currentNavigationPathRoutePathIdx + routePath.length) ?? routePath;
54
+ if (!isEnd && this.currentNavigationModuleKeys.indexOf(moduleKey) < 0) {
55
+ this.currentNavigationModuleKeys.push(moduleKey);
57
56
  }
58
- const config = this.getOrCreateRouteForModule(this.currentNavigationConfigModule);
57
+ this.logger.trace(`Config load ${isEnd ? 'end' : 'start'} for ${moduleKey} (routePath: ${routePath}; navigationUrl: ${this.currentNavigationPath})`);
58
+ const config = this.getOrCreateRouteForModule(moduleKey);
59
59
  config.route = route;
60
60
  config.isLoadEnd = isEnd;
61
- this.getLoadedRoutesFromRoute();
61
+ if (isEnd) {
62
+ this.getLoadedRoutesFromRoute(moduleKey);
63
+ }
62
64
  }
63
- getLoadedRoutesFromRoute() {
64
- if (!this.currentNavigationConfigModule ||
65
- !this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule]?.route ||
66
- Array.isArray(this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes)) {
65
+ getLoadedRoutesFromRoute(moduleKey, isFinish = false) {
66
+ const moduleConfig = this.lazyLoadedRoutesConfig[moduleKey];
67
+ if (!moduleConfig?.route || Array.isArray(moduleConfig.loadedRoutes)) {
67
68
  return;
68
69
  }
69
- this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes =
70
- this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].route['_loadedRoutes'];
71
- if (typeof this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes !== 'undefined') {
72
- this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutesSubject.next(this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes);
73
- this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutesSubject.complete();
70
+ moduleConfig.loadedRoutes = moduleConfig.route[this.routesLoadedPropKey];
71
+ if (!Array.isArray(moduleConfig.loadedRoutes) && isFinish) {
72
+ // if is called from finish and no lazy loaded routes are matched from router events, try finding in route config, it should be there!
73
+ this.logger.trace(`Route loadedRoutes for ${moduleKey} not found, searching in router config now`);
74
+ const route = this.findRouteInRouteConfig(moduleKey);
75
+ if (route) {
76
+ moduleConfig.route = route;
77
+ moduleConfig.loadedRoutes = moduleConfig.route[this.routesLoadedPropKey];
78
+ }
79
+ else {
80
+ this.logger.warn(`Route loadedRoutes for ${moduleKey} were not found in router config`);
81
+ }
82
+ }
83
+ if (typeof moduleConfig.loadedRoutes !== 'undefined') {
84
+ moduleConfig.loadedRoutesSubject.next(moduleConfig.loadedRoutes);
85
+ moduleConfig.loadedRoutesSubject.complete();
86
+ this.logger.trace(`Config load for ${moduleKey} is complete`, moduleConfig);
87
+ }
88
+ }
89
+ /**
90
+ * Search for route config by module path by recursive scanning of router config tree.
91
+ * @param modulePath Path of module that is searched.
92
+ * @param routes Routes to be scanned. If not provided, it starts on root router config.
93
+ * @private
94
+ */
95
+ findRouteInRouteConfig(modulePath, routes = this.router.config) {
96
+ if (modulePath.startsWith('/')) {
97
+ modulePath = modulePath.substring(1);
98
+ }
99
+ for (const route of routes) {
100
+ if (typeof route.path === 'undefined') {
101
+ continue;
102
+ }
103
+ let routePath = route.path;
104
+ if (routePath.startsWith('/')) {
105
+ routePath = routePath.substring(1);
106
+ }
107
+ const longestPathMatch = this.findLongestPathMatch(modulePath, routePath);
108
+ if (longestPathMatch === null) {
109
+ continue;
110
+ }
111
+ // there is a partial or full match
112
+ if (route.loadChildren && modulePath === longestPathMatch) {
113
+ // it's a hit!
114
+ return route;
115
+ }
116
+ else if (route.loadChildren && Array.isArray(route[this.routesLoadedPropKey])) {
117
+ const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route[this.routesLoadedPropKey]);
118
+ if (result) {
119
+ return result;
120
+ }
121
+ }
122
+ else if (route.children) {
123
+ const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route.children);
124
+ if (result) {
125
+ return result;
126
+ }
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ /**
132
+ * Finds longest path match of source to match string. If match is '', it is considered as a match in Angular routing.
133
+ * @param source Source string from on which comparison is based.
134
+ * @param match Match string to which the source is matched to.
135
+ * @private
136
+ */
137
+ findLongestPathMatch(source, match) {
138
+ const sourceSegments = source.split('/');
139
+ const matchSegments = match.split('/');
140
+ if (matchSegments.length === 1 && matchSegments[0] === '') {
141
+ // it's a hit, because empty route must always be processed (kind of a "abstract" route)
142
+ return '';
143
+ }
144
+ if (sourceSegments[0] === matchSegments[0]) {
145
+ // there is a match, find how long it is
146
+ for (let i = 1; i < sourceSegments.length; i++) {
147
+ if (sourceSegments[i] !== matchSegments[i]) {
148
+ // end of match
149
+ return sourceSegments.slice(0, i).join('/');
150
+ }
151
+ }
152
+ // there is full match
153
+ return sourceSegments.join('/');
74
154
  }
155
+ return null;
75
156
  }
76
157
  getOrCreateRouteForModule(moduleKey) {
77
158
  if (!this.lazyLoadedRoutesConfig[moduleKey]) {
@@ -94,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
94
175
  providedIn: 'root'
95
176
  }]
96
177
  }], ctorParameters: function () { return [{ type: i1.Router }]; } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFTLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBRW5LLE9BQU8sRUFBYSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFLckMsTUFBTSxPQUFPLGdCQUFnQjtJQWN6QixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVQxQiwyQkFBc0IsR0FPMUIsRUFBRSxDQUFDO0lBRThCLENBQUM7SUFFL0Isc0JBQXNCLENBQUMsSUFBNEI7UUFDdEQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQy9GLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxJQUE0QjtRQUN2RCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuSSxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQyxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxD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QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZSwgUm91dGVDb25maWdMb2FkRW5kLCBSb3V0ZUNvbmZpZ0xvYWRTdGFydCwgUm91dGVyLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nUm91dGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBjdXJyZW50TmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBjdXJyZW50TmF2aWdhdGlvbkNvbmZpZ01vZHVsZT86IHN0cmluZztcbiAgICBwcml2YXRlIGN1cnJlbnROYXZpZ2F0aW9uQ29uZmlnTG9hZGVkPzogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgbGF6eUxvYWRlZFJvdXRlc0NvbmZpZzoge1xuICAgICAgICBbcGF0aDogc3RyaW5nXToge1xuICAgICAgICAgICAgcm91dGU/OiBSb3V0ZTtcbiAgICAgICAgICAgIGlzTG9hZEVuZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxvYWRlZFJvdXRlcz86IFJvdXRlcztcbiAgICAgICAgICAgIGxvYWRlZFJvdXRlc1N1YmplY3Q6IFN1YmplY3Q8Um91dGVzPjtcbiAgICAgICAgfTtcbiAgICB9ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gICAgcHVibGljIGdldFJvdXRlTG9hZGVkQ2hpbGRyZW4ocGF0aDogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IFJvdXRlcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9yQ3JlYXRlUm91dGVGb3JNb2R1bGUodGhpcy5nZXRNb2R1bGVQYXRoRnJvbVJvdXRlckxpbmsocGF0aCkpLmxvYWRlZFJvdXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Um91dGVMb2FkZWRDaGlsZHJlbiQocGF0aDogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IE9ic2VydmFibGU8Um91dGVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9yQ3JlYXRlUm91dGVGb3JNb2R1bGUodGhpcy5nZXRNb2R1bGVQYXRoRnJvbVJvdXRlckxpbmsocGF0aCkpLmxvYWRlZFJvdXRlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShmaXJzdCgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0TmF2aWdhdGlvbihldmVudC51cmwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXJrTmF2aWdhdGlvbkNvbmZpZ0xvYWQoZXZlbnQucm91dGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZEVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya05hdmlnYXRpb25Db25maWdMb2FkKGV2ZW50LnJvdXRlLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0TmF2aWdhdGlvbih1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmN1cnJlbnROYXZpZ2F0aW9uUGF0aCA9IHVybC5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gICAgICAgIHRoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdMb2FkZWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5pc2hOYXZpZ2F0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2aWdhdGlvbkNvbmZpZ0xvYWRlZCAmJiB0aGlzLmN1cnJlbnROYXZpZ2F0aW9uQ29uZmlnTW9kdWxlKSB7XG4gICAgICAgICAgICB0aGlzLmdldExvYWRlZFJvdXRlc0Zyb21Sb3V0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE5hdmlnYXRpb25QYXRoID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFya05hdmlnYXRpb25Db25maWdMb2FkKHJvdXRlOiBSb3V0ZSwgaXNFbmQgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnROYXZpZ2F0aW9uQ29uZmlnTG9hZGVkID0gaXNFbmQ7XG4gICAgICAgIGxldCByb3V0ZVBhdGggPSByb3V0ZS5wYXRoID8/ICcnO1xuICAgICAgICBpZiAoIXJvdXRlUGF0aC5zdGFydHNXaXRoKCcvJykpIHJvdXRlUGF0aCA9IGAvJHtyb3V0ZVBhdGh9YDtcblxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGUpIHtcbiAgICAgICAgICAgIGxldCBtb2R1bGVLZXkgPSByb3V0ZVBhdGg7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvblBhdGhSb3V0ZVBhdGhJZHggPSB0aGlzLmN1cnJlbnROYXZpZ2F0aW9uUGF0aD8uaW5kZXhPZihyb3V0ZVBhdGgpID8/IC0xO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE5hdmlnYXRpb25QYXRoICYmIGN1cnJlbnROYXZpZ2F0aW9uUGF0aFJvdXRlUGF0aElkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlS2V5ID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvblBhdGguc3Vic3RyaW5nKDAsIGN1cnJlbnROYXZpZ2F0aW9uUGF0aFJvdXRlUGF0aElkeCArIHJvdXRlUGF0aC5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TmF2aWdhdGlvbkNvbmZpZ01vZHVsZSA9IG1vZHVsZUtleTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0T3JDcmVhdGVSb3V0ZUZvck1vZHVsZSh0aGlzLmN1cnJlbnROYXZpZ2F0aW9uQ29uZmlnTW9kdWxlKTtcbiAgICAgICAgY29uZmlnLnJvdXRlID0gcm91dGU7XG4gICAgICAgIGNvbmZpZy5pc0xvYWRFbmQgPSBpc0VuZDtcbiAgICAgICAgdGhpcy5nZXRMb2FkZWRSb3V0ZXNGcm9tUm91dGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvYWRlZFJvdXRlc0Zyb21Sb3V0ZSgpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGUgfHxcbiAgICAgICAgICAgICF0aGlzLmxhenlMb2FkZWRSb3V0ZXNDb25maWdbdGhpcy5jdXJyZW50TmF2aWdhdGlvbkNvbmZpZ01vZHVsZV0/LnJvdXRlIHx8XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHRoaXMubGF6eUxvYWRlZFJvdXRlc0NvbmZpZ1t0aGlzLmN1cnJlbnROYXZpZ2F0aW9uQ29uZmlnTW9kdWxlXS5sb2FkZWRSb3V0ZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXp5TG9hZGVkUm91dGVzQ29uZmlnW3RoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGVdLmxvYWRlZFJvdXRlcyA9XG4gICAgICAgICAgICB0aGlzLmxhenlMb2FkZWRSb3V0ZXNDb25maWdbdGhpcy5jdXJyZW50TmF2aWdhdGlvbkNvbmZpZ01vZHVsZV0ucm91dGUhWydfbG9hZGVkUm91dGVzJyBhcyBrZXlvZiBvYmplY3RdO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXp5TG9hZGVkUm91dGVzQ29uZmlnW3RoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGVdLmxvYWRlZFJvdXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMubGF6eUxvYWRlZFJvdXRlc0NvbmZpZ1t0aGlzLmN1cnJlbnROYXZpZ2F0aW9uQ29uZmlnTW9kdWxlXS5sb2FkZWRSb3V0ZXNTdWJqZWN0Lm5leHQodGhpcy5sYXp5TG9hZGVkUm91dGVzQ29uZmlnW3RoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGVdLmxvYWRlZFJvdXRlcyEpO1xuICAgICAgICAgICAgdGhpcy5sYXp5TG9hZGVkUm91dGVzQ29uZmlnW3RoaXMuY3VycmVudE5hdmlnYXRpb25Db25maWdNb2R1bGVdLmxvYWRlZFJvdXRlc1N1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3JDcmVhdGVSb3V0ZUZvck1vZHVsZShtb2R1bGVLZXk6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubGF6eUxvYWRlZFJvdXRlc0NvbmZpZ1ttb2R1bGVLZXldKSB7XG4gICAgICAgICAgICB0aGlzLmxhenlMb2FkZWRSb3V0ZXNDb25maWdbbW9kdWxlS2V5XSA9IHtcbiAgICAgICAgICAgICAgICBsb2FkZWRSb3V0ZXNTdWJqZWN0OiBuZXcgUmVwbGF5U3ViamVjdDxSb3V0ZXM+KDEpLFxuICAgICAgICAgICAgICAgIGlzTG9hZEVuZDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sYXp5TG9hZGVkUm91dGVzQ29uZmlnW21vZHVsZUtleV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb2R1bGVQYXRoRnJvbVJvdXRlckxpbmsocGF0aDogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPikge1xuICAgICAgICByZXR1cm4gKCcvJyArIChBcnJheS5pc0FycmF5KHBhdGgpID8gcGF0aC5qb2luKCcvJykgOiBwYXRoKSkucmVwbGFjZSgvXFwvXFwvL2csICcvJyk7XG4gICAgfVxufVxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBUyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUVuSyxPQUFPLEVBQWEsYUFBYSxFQUFVLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBS2xELE1BQU0sT0FBTyxnQkFBZ0I7SUFnQnpCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmpCLFdBQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RCx3QkFBbUIsR0FBRyxlQUFlLENBQUM7UUFHL0MsZ0NBQTJCLEdBQWEsRUFBRSxDQUFDO1FBRTNDLDJCQUFzQixHQU8xQixFQUFFLENBQUM7SUFFOEIsQ0FBQztJQUUvQixzQkFBc0IsQ0FBQyxJQUE0QjtRQUN0RCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDL0YsQ0FBQztJQUVNLHVCQUF1QixDQUFDLElBQTRCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFB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LENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9DO2FBQ0o7WUFFRCxzQkFBc0I7WUFDdEIsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLHlCQUF5QixDQUFDLFNBQWlCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxHQUFHO2dCQUNyQyxtQkFBbUIsRUFBRSxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUM7Z0JBQ2pELFNBQVMsRUFBRSxLQUFLO2FBQ25CLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTywyQkFBMkIsQ0FBQyxJQUE0QjtRQUM1RCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBOUxRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7MkZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlLCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJvdXRlQ29uZmlnTG9hZFN0YXJ0LCBSb3V0ZXIsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdMb2dnZXJTZXJ2aWNlfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNbmdSb3V0ZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChNbmdMb2dnZXJTZXJ2aWNlKS5jcmVhdGUoJ01uZ1JvdXRlclNlcnZpY2UnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlc0xvYWRlZFByb3BLZXkgPSAnX2xvYWRlZFJvdXRlcyc7XG5cbiAgICBwcml2YXRlIGN1cnJlbnROYXZpZ2F0aW9uUGF0aD86IHN0cmluZztcbiAgICBwcml2YXRlIGN1cnJlbnROYXZpZ2F0aW9uTW9kdWxlS2V5czogc3RyaW5nW10gPSBbXTtcblxuICAgIHByaXZhdGUgbGF6eUxvYWRlZFJvdXRlc0NvbmZpZzoge1xuICAgICAgICBbcGF0aDogc3RyaW5nXToge1xuICAgICAgICAgICAgcm91dGU/OiBSb3V0ZTtcbiAgICAgICAgICAgIGlzTG9hZEVuZDogYm9vbGVhbjtcbiAgICAgICAgICAgIGxvYWRlZFJvdXRlcz86IFJvdXRlcztcbiAgICAgICAgICAgIGxvYWRlZFJvdXRlc1N1YmplY3Q6IFN1YmplY3Q8Um91dGVzPjtcbiAgICAgICAgfTtcbiAgICB9ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gICAgcHVibGljIGdldFJvdXRlTG9hZGVkQ2hpbGRyZW4ocGF0aDogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IFJvdXRlcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9yQ3JlYXRlUm91dGVGb3JNb2R1bGUodGhpcy5nZXRNb2R1bGVQYXRoRnJvbVJvdXRlckxpbmsocGF0aCkpLmxvYWRlZFJvdXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Um91dGVMb2FkZWRDaGlsZHJlbiQocGF0aDogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IE9ic2VydmFibGU8Um91dGVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9yQ3JlYXRlUm91dGVGb3JNb2R1bGUodGhpcy5nZXRNb2R1bGVQYXRoRnJvbVJvdXRlckxpbmsocGF0aCkpLmxvYWRlZFJvdXRlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShmaXJzdCgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0TmF2aWdhdGlvbihldmVudC51cmwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXJrTmF2aWdhdGlvbkNvbmZpZ0xvYWQoZXZlbnQucm91dGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZEVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFya05hdmlnYXRpb25Db25maWdMb2FkKGV2ZW50LnJvdXRlLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fCBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0TmF2aWdhdGlvbih1cmw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmN1cnJlbnROYXZpZ2F0aW9uUGF0aCA9IHVybC5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gICAgICAgIHRoaXMuY3VycmVudE5hdmlnYXRpb25Nb2R1bGVLZXlzID0gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5pc2hOYXZpZ2F0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2aWdhdGlvbk1vZHVsZUtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnROYXZpZ2F0aW9uTW9kdWxlS2V5cy5mb3JFYWNoKGsgPT4gdGhpcy5nZXRMb2FkZWRSb3V0ZXNGcm9tUm91dGUoaywgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE5hdmlnYXRpb25QYXRoID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFya05hdmlnYXRpb25Db25maWdMb2FkKHJvdXRlOiBSb3V0ZSwgaXNFbmQgPSBmYWxzZSkge1xuICAgICAgICBsZXQgcm91dGVQYXRoID0gcm91dGUucGF0aCA/PyAnJztcbiAgICAgICAgaWYgKCFyb3V0ZVBhdGguc3RhcnRzV2l0aCgnLycpKSByb3V0ZVBhdGggPSBgLyR7cm91dGVQYXRofWA7XG5cbiAgICAgICAgY29uc3QgY3VycmVudE5hdmlnYXRpb25QYXRoUm91dGVQYXRoSWR4ID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvblBhdGg/LmluZGV4T2Yocm91dGVQYXRoKSA/PyAtMTtcbiAgICAgICAgY29uc3QgbW9kdWxlS2V5ID0gdGhpcy5jdXJyZW50TmF2aWdhdGlvblBhdGg/LnN1YnN0cmluZygwLCBjdXJyZW50TmF2aWdhdGlvblBhdGhSb3V0ZVBhdGhJZHggKyByb3V0ZVBhdGgubGVuZ3RoKSA/PyByb3V0ZVBhdGg7XG4gICAgICAgIGlmICghaXNFbmQgJiYgdGhpcy5jdXJyZW50TmF2aWdhdGlvbk1vZHVsZUtleXMuaW5kZXhPZihtb2R1bGVLZXkpIDwgMCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TmF2aWdhdGlvbk1vZHVsZUtleXMucHVzaChtb2R1bGVLZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoYENvbmZpZyBsb2FkICR7aXNFbmQgPyAnZW5kJyA6ICdzdGFydCd9IGZvciAke21vZHVsZUtleX0gKHJvdXRlUGF0aDogJHtyb3V0ZVBhdGh9OyBuYXZpZ2F0aW9uVXJsOiAke3RoaXMuY3VycmVudE5hdmlnYXRpb25QYXRofSlgKTtcblxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldE9yQ3JlYXRlUm91dGVGb3JNb2R1bGUobW9kdWxlS2V5KTtcbiAgICAgICAgY29uZmlnLnJvdXRlID0gcm91dGU7XG4gICAgICAgIGNvbmZpZy5pc0xvYWRFbmQgPSBpc0VuZDtcblxuICAgICAgICBpZiAoaXNFbmQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TG9hZGVkUm91dGVzRnJvbVJvdXRlKG1vZHVsZUtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvYWRlZFJvdXRlc0Zyb21Sb3V0ZShtb2R1bGVLZXk6IHN0cmluZywgaXNGaW5pc2ggPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBtb2R1bGVDb25maWcgPSB0aGlzLmxhenlMb2FkZWRSb3V0ZXNDb25maWdbbW9kdWxlS2V5XTtcbiAgICAgICAgaWYgKCFtb2R1bGVDb25maWc/LnJvdXRlIHx8IEFycmF5LmlzQXJyYXkobW9kdWxlQ29uZmlnLmxvYWRlZFJvdXRlcykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vZHVsZUNvbmZpZy5sb2FkZWRSb3V0ZXMgPSBtb2R1bGVDb25maWcucm91dGUhW3RoaXMucm91dGVzTG9hZGVkUHJvcEtleSBhcyBrZXlvZiBvYmplY3RdO1xuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2R1bGVDb25maWcubG9hZGVkUm91dGVzKSAmJiBpc0ZpbmlzaCkge1xuICAgICAgICAgICAgLy8gaWYgaXMgY2FsbGVkIGZyb20gZmluaXNoIGFuZCBubyBsYXp5IGxvYWRlZCByb3V0ZXMgYXJlIG1hdGNoZWQgZnJvbSByb3V0ZXIgZXZlbnRzLCB0cnkgZmluZGluZyBpbiByb3V0ZSBjb25maWcsIGl0IHNob3VsZCBiZSB0aGVyZSFcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKGBSb3V0ZSBsb2FkZWRSb3V0ZXMgZm9yICR7bW9kdWxlS2V5fSBub3QgZm91bmQsIHNlYXJjaGluZyBpbiByb3V0ZXIgY29uZmlnIG5vd2ApO1xuICAgICAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmZpbmRSb3V0ZUluUm91dGVDb25maWcobW9kdWxlS2V5KTtcbiAgICAgICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgICAgIG1vZHVsZUNvbmZpZy5yb3V0ZSA9IHJvdXRlO1xuICAgICAgICAgICAgICAgIG1vZHVsZUNvbmZpZy5sb2FkZWRSb3V0ZXMgPSBtb2R1bGVDb25maWcucm91dGUhW3RoaXMucm91dGVzTG9hZGVkUHJvcEtleSBhcyBrZXlvZiBvYmplY3RdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBSb3V0ZSBsb2FkZWRSb3V0ZXMgZm9yICR7bW9kdWxlS2V5fSB3ZXJlIG5vdCBmb3VuZCBpbiByb3V0ZXIgY29uZmlnYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG1vZHVsZUNvbmZpZy5sb2FkZWRSb3V0ZXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBtb2R1bGVDb25maWcubG9hZGVkUm91dGVzU3ViamVjdC5uZXh0KG1vZHVsZUNvbmZpZy5sb2FkZWRSb3V0ZXMhKTtcbiAgICAgICAgICAgIG1vZHVsZUNvbmZpZy5sb2FkZWRSb3V0ZXNTdWJqZWN0LmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLnRyYWNlKGBDb25maWcgbG9hZCBmb3IgJHttb2R1bGVLZXl9IGlzIGNvbXBsZXRlYCwgbW9kdWxlQ29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaCBmb3Igcm91dGUgY29uZmlnIGJ5IG1vZHVsZSBwYXRoIGJ5IHJlY3Vyc2l2ZSBzY2FubmluZyBvZiByb3V0ZXIgY29uZmlnIHRyZWUuXG4gICAgICogQHBhcmFtIG1vZHVsZVBhdGggUGF0aCBvZiBtb2R1bGUgdGhhdCBpcyBzZWFyY2hlZC5cbiAgICAgKiBAcGFyYW0gcm91dGVzIFJvdXRlcyB0byBiZSBzY2FubmVkLiBJZiBub3QgcHJvdmlkZWQsIGl0IHN0YXJ0cyBvbiByb290IHJvdXRlciBjb25maWcuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbmRSb3V0ZUluUm91dGVDb25maWcobW9kdWxlUGF0aDogc3RyaW5nLCByb3V0ZXM6IFJvdXRlcyA9IHRoaXMucm91dGVyLmNvbmZpZyk6IFJvdXRlIHwgbnVsbCB7XG4gICAgICAgIGlmIChtb2R1bGVQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgbW9kdWxlUGF0aCA9IG1vZHVsZVBhdGguc3Vic3RyaW5nKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm91dGUucGF0aCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByb3V0ZVBhdGggPSByb3V0ZS5wYXRoO1xuICAgICAgICAgICAgaWYgKHJvdXRlUGF0aC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGggPSByb3V0ZVBhdGguc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsb25nZXN0UGF0aE1hdGNoID0gdGhpcy5maW5kTG9uZ2VzdFBhdGhNYXRjaChtb2R1bGVQYXRoLCByb3V0ZVBhdGgpO1xuICAgICAgICAgICAgaWYgKGxvbmdlc3RQYXRoTWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdGhlcmUgaXMgYSBwYXJ0aWFsIG9yIGZ1bGwgbWF0Y2hcbiAgICAgICAgICAgIGlmIChyb3V0ZS5sb2FkQ2hpbGRyZW4gJiYgbW9kdWxlUGF0aCA9PT0gbG9uZ2VzdFBhdGhNYXRjaCkge1xuICAgICAgICAgICAgICAgIC8vIGl0J3MgYSBoaXQhXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyb3V0ZS5sb2FkQ2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShyb3V0ZVt0aGlzLnJvdXRlc0xvYWRlZFByb3BLZXkgYXMga2V5b2Ygb2JqZWN0XSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRSb3V0ZUluUm91dGVDb25maWcobW9kdWxlUGF0aC5zdWJzdHJpbmcobG9uZ2VzdFBhdGhNYXRjaC5sZW5ndGgsIG1vZHVsZVBhdGgubGVuZ3RoKSwgcm91dGVbdGhpcy5yb3V0ZXNMb2FkZWRQcm9wS2V5IGFzIGtleW9mIG9iamVjdF0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kUm91dGVJblJvdXRlQ29uZmlnKG1vZHVsZVBhdGguc3Vic3RyaW5nKGxvbmdlc3RQYXRoTWF0Y2gubGVuZ3RoLCBtb2R1bGVQYXRoLmxlbmd0aCksIHJvdXRlLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgbG9uZ2VzdCBwYXRoIG1hdGNoIG9mIHNvdXJjZSB0byBtYXRjaCBzdHJpbmcuIElmIG1hdGNoIGlzICcnLCBpdCBpcyBjb25zaWRlcmVkIGFzIGEgbWF0Y2ggaW4gQW5ndWxhciByb3V0aW5nLlxuICAgICAqIEBwYXJhbSBzb3VyY2UgU291cmNlIHN0cmluZyBmcm9tIG9uIHdoaWNoIGNvbXBhcmlzb24gaXMgYmFzZWQuXG4gICAgICogQHBhcmFtIG1hdGNoIE1hdGNoIHN0cmluZyB0byB3aGljaCB0aGUgc291cmNlIGlzIG1hdGNoZWQgdG8uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbmRMb25nZXN0UGF0aE1hdGNoKHNvdXJjZTogc3RyaW5nLCBtYXRjaDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNvdXJjZVNlZ21lbnRzID0gc291cmNlLnNwbGl0KCcvJyk7XG4gICAgICAgIGNvbnN0IG1hdGNoU2VnbWVudHMgPSBtYXRjaC5zcGxpdCgnLycpO1xuXG4gICAgICAgIGlmIChtYXRjaFNlZ21lbnRzLmxlbmd0aCA9PT0gMSAmJiBtYXRjaFNlZ21lbnRzWzBdID09PSAnJykge1xuICAgICAgICAgICAgLy8gaXQncyBhIGhpdCwgYmVjYXVzZSBlbXB0eSByb3V0ZSBtdXN0IGFsd2F5cyBiZSBwcm9jZXNzZWQgKGtpbmQgb2YgYSBcImFic3RyYWN0XCIgcm91dGUpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc291cmNlU2VnbWVudHNbMF0gPT09IG1hdGNoU2VnbWVudHNbMF0pIHtcbiAgICAgICAgICAgIC8vIHRoZXJlIGlzIGEgbWF0Y2gsIGZpbmQgaG93IGxvbmcgaXQgaXNcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc291cmNlU2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlU2VnbWVudHNbaV0gIT09IG1hdGNoU2VnbWVudHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VTZWdtZW50cy5zbGljZSgwLCBpKS5qb2luKCcvJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB0aGVyZSBpcyBmdWxsIG1hdGNoXG4gICAgICAgICAgICByZXR1cm4gc291cmNlU2VnbWVudHMuam9pbignLycpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPckNyZWF0ZVJvdXRlRm9yTW9kdWxlKG1vZHVsZUtleTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5sYXp5TG9hZGVkUm91dGVzQ29uZmlnW21vZHVsZUtleV0pIHtcbiAgICAgICAgICAgIHRoaXMubGF6eUxvYWRlZFJvdXRlc0NvbmZpZ1ttb2R1bGVLZXldID0ge1xuICAgICAgICAgICAgICAgIGxvYWRlZFJvdXRlc1N1YmplY3Q6IG5ldyBSZXBsYXlTdWJqZWN0PFJvdXRlcz4oMSksXG4gICAgICAgICAgICAgICAgaXNMb2FkRW5kOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmxhenlMb2FkZWRSb3V0ZXNDb25maWdbbW9kdWxlS2V5XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1vZHVsZVBhdGhGcm9tUm91dGVyTGluayhwYXRoOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+KSB7XG4gICAgICAgIHJldHVybiAoJy8nICsgKEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoLmpvaW4oJy8nKSA6IHBhdGgpKS5yZXBsYWNlKC9cXC9cXC8vZywgJy8nKTtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  export * from './browser-storage.token';
2
2
  export * from './commons-init.token';
3
3
  export * from './default-setting.token';
4
+ export * from './log-publisher.token';
4
5
  export * from './module-config.token';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9icm93c2VyLXN0b3JhZ2UudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb25zLWluaXQudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LXNldHRpbmcudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUtY29uZmlnLnRva2VuJztcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jyb3dzZXItc3RvcmFnZS50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbnMtaW5pdC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtc2V0dGluZy50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xvZy1wdWJsaXNoZXIudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUtY29uZmlnLnRva2VuJztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const MNG_LOG_PUBLISHERS = new InjectionToken('MNG_LOG_PUBLISHERS');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXB1Ymxpc2hlci50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdG9rZW5zL2xvZy1wdWJsaXNoZXIudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUk3QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0lNbmdMb2dQdWJsaXNoZXJ9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBNTkdfTE9HX1BVQkxJU0hFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48SU1uZ0xvZ1B1Ymxpc2hlcltdPignTU5HX0xPR19QVUJMSVNIRVJTJyk7XG4iXX0=