ngx-cho-common 0.0.1

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 (76) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/guards/feature-guard.service.mjs +32 -0
  3. package/esm2022/lib/guards/unsaved-changes.guard.mjs +13 -0
  4. package/esm2022/lib/logging/console-logger.sink.mjs +27 -0
  5. package/esm2022/lib/logging/logger-sink-configuration.interface.mjs +2 -0
  6. package/esm2022/lib/logging/logger-sink.interface.mjs +2 -0
  7. package/esm2022/lib/logging/logger.model.mjs +3 -0
  8. package/esm2022/lib/logging/logger.service.mjs +127 -0
  9. package/esm2022/lib/logging/models/client-log-entry.interface.mjs +2 -0
  10. package/esm2022/lib/logging/models/severity-level.enum.mjs +9 -0
  11. package/esm2022/lib/logging/server-logger.sink.mjs +51 -0
  12. package/esm2022/lib/models/deactivatable.interface.mjs +2 -0
  13. package/esm2022/lib/models/uuid.model.mjs +32 -0
  14. package/esm2022/lib/security/auth-callback/auth-callback.component.mjs +18 -0
  15. package/esm2022/lib/security/models/auth-user.model.mjs +84 -0
  16. package/esm2022/lib/security/models/authorization-context.model.mjs +6 -0
  17. package/esm2022/lib/security/models/security-policy.model.mjs +15 -0
  18. package/esm2022/lib/security/security-policies.mjs +3 -0
  19. package/esm2022/lib/security/services/auth-guard.service.mjs +32 -0
  20. package/esm2022/lib/security/services/auth.service.mjs +131 -0
  21. package/esm2022/lib/security/signin/signin.component.mjs +18 -0
  22. package/esm2022/lib/security/signout/signout.component.mjs +18 -0
  23. package/esm2022/lib/services/date.service.mjs +40 -0
  24. package/esm2022/lib/services/download.service.mjs +49 -0
  25. package/esm2022/lib/services/feature.service.mjs +66 -0
  26. package/esm2022/lib/services/interval.service.mjs +115 -0
  27. package/esm2022/lib/services/local-storage.service.mjs +29 -0
  28. package/esm2022/lib/services/modal.service.mjs +34 -0
  29. package/esm2022/lib/services/navigation.service.mjs +45 -0
  30. package/esm2022/lib/services/object.service.mjs +33 -0
  31. package/esm2022/lib/services/rest-client.service.mjs +136 -0
  32. package/esm2022/lib/services/route-param.service.mjs +53 -0
  33. package/esm2022/lib/services/session-storage.service.mjs +29 -0
  34. package/esm2022/lib/types/indexable.type.mjs +2 -0
  35. package/esm2022/lib/types/name-value-item.type.mjs +2 -0
  36. package/esm2022/ngx-cho-common.mjs +5 -0
  37. package/esm2022/public-api.mjs +32 -0
  38. package/fesm2022/ngx-cho-common.mjs +1196 -0
  39. package/fesm2022/ngx-cho-common.mjs.map +1 -0
  40. package/index.d.ts +5 -0
  41. package/lib/guards/feature-guard.service.d.ts +14 -0
  42. package/lib/guards/unsaved-changes.guard.d.ts +11 -0
  43. package/lib/logging/console-logger.sink.d.ts +10 -0
  44. package/lib/logging/logger-sink-configuration.interface.d.ts +14 -0
  45. package/lib/logging/logger-sink.interface.d.ts +7 -0
  46. package/lib/logging/logger.model.d.ts +10 -0
  47. package/lib/logging/logger.service.d.ts +29 -0
  48. package/lib/logging/models/client-log-entry.interface.d.ts +10 -0
  49. package/lib/logging/models/severity-level.enum.d.ts +7 -0
  50. package/lib/logging/server-logger.sink.d.ts +27 -0
  51. package/lib/models/deactivatable.interface.d.ts +4 -0
  52. package/lib/models/uuid.model.d.ts +4 -0
  53. package/lib/security/auth-callback/auth-callback.component.d.ts +10 -0
  54. package/lib/security/models/auth-user.model.d.ts +57 -0
  55. package/lib/security/models/authorization-context.model.d.ts +5 -0
  56. package/lib/security/models/security-policy.model.d.ts +9 -0
  57. package/lib/security/security-policies.d.ts +3 -0
  58. package/lib/security/services/auth-guard.service.d.ts +12 -0
  59. package/lib/security/services/auth.service.d.ts +60 -0
  60. package/lib/security/signin/signin.component.d.ts +10 -0
  61. package/lib/security/signout/signout.component.d.ts +10 -0
  62. package/lib/services/date.service.d.ts +11 -0
  63. package/lib/services/download.service.d.ts +13 -0
  64. package/lib/services/feature.service.d.ts +40 -0
  65. package/lib/services/interval.service.d.ts +37 -0
  66. package/lib/services/local-storage.service.d.ts +9 -0
  67. package/lib/services/modal.service.d.ts +12 -0
  68. package/lib/services/navigation.service.d.ts +14 -0
  69. package/lib/services/object.service.d.ts +14 -0
  70. package/lib/services/rest-client.service.d.ts +88 -0
  71. package/lib/services/route-param.service.d.ts +17 -0
  72. package/lib/services/session-storage.service.d.ts +9 -0
  73. package/lib/types/indexable.type.d.ts +6 -0
  74. package/lib/types/name-value-item.type.d.ts +5 -0
  75. package/package.json +30 -0
  76. package/public-api.d.ts +33 -0
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # NgxChoCommon
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project ngx-cho-common` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-cho-common`.
8
+ > Note: Don't forget to add `--project ngx-cho-common` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build ngx-cho-common` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build ngx-cho-common`, go to the dist folder `cd dist/ngx-cho-common` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test ngx-cho-common` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../services/feature.service";
4
+ import * as i2 from "../services/navigation.service";
5
+ import * as i3 from "ngx-toastr";
6
+ export class FeatureGuardService {
7
+ constructor(featureService, navigationService, toastr) {
8
+ this.featureService = featureService;
9
+ this.navigationService = navigationService;
10
+ this.toastr = toastr;
11
+ }
12
+ async canActivate(route) {
13
+ const routeFeature = route.data['feature'];
14
+ if (!routeFeature) {
15
+ return true;
16
+ }
17
+ await this.featureService.checkEnabledFeatures();
18
+ if (!this.featureService.checkFeatureIsEnabled(routeFeature)) {
19
+ this.toastr.error("Oops! It doesn't look like this feature has been enabled.");
20
+ this.navigationService.goBack();
21
+ return false;
22
+ }
23
+ return true;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureGuardService, deps: [{ token: i1.FeatureService }, { token: i2.NavigationService }, { token: i3.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureGuardService, providedIn: 'root' }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FeatureGuardService, decorators: [{
29
+ type: Injectable,
30
+ args: [{ providedIn: 'root' }]
31
+ }], ctorParameters: () => [{ type: i1.FeatureService }, { type: i2.NavigationService }, { type: i3.ToastrService }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9ndWFyZHMvZmVhdHVyZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDNUIsWUFDcUIsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLE1BQXFCO1FBRnJCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQWU7SUFDdkMsQ0FBQztJQUVHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBNkI7UUFDbEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQVcsQ0FBQztRQUVyRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUUvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFaEMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7K0dBekJRLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgRmVhdHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mZWF0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVHdWFyZFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVTZXJ2aWNlOiBGZWF0dXJlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGFzeW5jIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJvdXRlRmVhdHVyZSA9IHJvdXRlLmRhdGFbJ2ZlYXR1cmUnXSBhcyBzdHJpbmc7XG5cbiAgICAgICAgaWYgKCFyb3V0ZUZlYXR1cmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5mZWF0dXJlU2VydmljZS5jaGVja0VuYWJsZWRGZWF0dXJlcygpO1xuXG4gICAgICAgIGlmICghdGhpcy5mZWF0dXJlU2VydmljZS5jaGVja0ZlYXR1cmVJc0VuYWJsZWQocm91dGVGZWF0dXJlKSkge1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJPb3BzISBJdCBkb2Vzbid0IGxvb2sgbGlrZSB0aGlzIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZC5cIik7XG5cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ29CYWNrKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class UnsavedChangesGuard {
4
+ canDeactivate(component) {
5
+ return component.onDeactivate ? component.onDeactivate() : true;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UnsavedChangesGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UnsavedChangesGuard }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UnsavedChangesGuard, decorators: [{
11
+ type: Injectable
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zYXZlZC1jaGFuZ2VzLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9ndWFyZHMvdW5zYXZlZC1jaGFuZ2VzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFJNUIsYUFBYSxDQUFDLFNBQXlCO1FBQ25DLE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEUsQ0FBQzsrR0FOUSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSURlYWN0aXZhdGFibGUgfSBmcm9tICcuLi9tb2RlbHMvZGVhY3RpdmF0YWJsZS5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVW5zYXZlZENoYW5nZXNHdWFyZCB7XG4gICAgY29tcG9uZW50OiBJRGVhY3RpdmF0YWJsZSB8IHVuZGVmaW5lZDtcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IHVuZGVmaW5lZDtcblxuICAgIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBJRGVhY3RpdmF0YWJsZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQub25EZWFjdGl2YXRlID8gY29tcG9uZW50Lm9uRGVhY3RpdmF0ZSgpIDogdHJ1ZTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { SeverityLevel } from './models/severity-level.enum';
2
+ export class ConsoleLoggerSink {
3
+ constructor(name, level) {
4
+ this.name = name;
5
+ this.level = level;
6
+ this.consoleMethods = new Map([
7
+ [SeverityLevel.verbose, console.log],
8
+ [SeverityLevel.information, console.info || console.log],
9
+ [SeverityLevel.warning, console.warn || console.log],
10
+ [SeverityLevel.error, console.error || console.log],
11
+ [SeverityLevel.critical, console.error || console.log],
12
+ ]);
13
+ }
14
+ write(logEntry) {
15
+ const consoleMethod = this.consoleMethods.get(logEntry.severityLevel) || console.log;
16
+ if (logEntry.stackTrace) {
17
+ const error = new Error(logEntry.message);
18
+ error.stack = logEntry.stackTrace;
19
+ consoleMethod(error);
20
+ }
21
+ else {
22
+ consoleMethod(logEntry.message);
23
+ }
24
+ return Promise.resolve();
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1sb2dnZXIuc2luay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbG9nZ2luZy9jb25zb2xlLWxvZ2dlci5zaW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc3RCxNQUFNLE9BQU8saUJBQWlCO0lBVzFCLFlBQTRCLElBQVksRUFBUyxLQUFvQjtRQUF6QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQVY3RCxtQkFBYyxHQUFHLElBQUksR0FBRyxDQUM1QjtZQUNJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3BDLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDeEQsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNwRCxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ25ELENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDekQsQ0FDSixDQUFDO0lBRXNFLENBQUM7SUFFekUsS0FBSyxDQUFDLFFBQXlCO1FBQzNCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO1FBRXJGLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxLQUFLLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFFbEMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ0osYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNsaWVudExvZ0VudHJ5IH0gZnJvbSAnLi9tb2RlbHMvY2xpZW50LWxvZy1lbnRyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2V2ZXJpdHlMZXZlbCB9IGZyb20gJy4vbW9kZWxzL3NldmVyaXR5LWxldmVsLmVudW0nO1xuaW1wb3J0IHsgSUxvZ2dlclNpbmsgfSBmcm9tICcuL2xvZ2dlci1zaW5rLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBDb25zb2xlTG9nZ2VyU2luayBpbXBsZW1lbnRzIElMb2dnZXJTaW5rIHtcbiAgICBwcml2YXRlIGNvbnNvbGVNZXRob2RzID0gbmV3IE1hcDxTZXZlcml0eUxldmVsLCAobWVzc2FnZTogdW5rbm93biwgLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkPihcbiAgICAgICAgW1xuICAgICAgICAgICAgW1NldmVyaXR5TGV2ZWwudmVyYm9zZSwgY29uc29sZS5sb2ddLFxuICAgICAgICAgICAgW1NldmVyaXR5TGV2ZWwuaW5mb3JtYXRpb24sIGNvbnNvbGUuaW5mbyB8fCBjb25zb2xlLmxvZ10sXG4gICAgICAgICAgICBbU2V2ZXJpdHlMZXZlbC53YXJuaW5nLCBjb25zb2xlLndhcm4gfHwgY29uc29sZS5sb2ddLFxuICAgICAgICAgICAgW1NldmVyaXR5TGV2ZWwuZXJyb3IsIGNvbnNvbGUuZXJyb3IgfHwgY29uc29sZS5sb2ddLFxuICAgICAgICAgICAgW1NldmVyaXR5TGV2ZWwuY3JpdGljYWwsIGNvbnNvbGUuZXJyb3IgfHwgY29uc29sZS5sb2ddLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBsZXZlbDogU2V2ZXJpdHlMZXZlbCkge31cblxuICAgIHdyaXRlKGxvZ0VudHJ5OiBJQ2xpZW50TG9nRW50cnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY29uc29sZU1ldGhvZCA9IHRoaXMuY29uc29sZU1ldGhvZHMuZ2V0KGxvZ0VudHJ5LnNldmVyaXR5TGV2ZWwpIHx8IGNvbnNvbGUubG9nO1xuXG4gICAgICAgIGlmIChsb2dFbnRyeS5zdGFja1RyYWNlKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihsb2dFbnRyeS5tZXNzYWdlKTtcbiAgICAgICAgICAgIGVycm9yLnN0YWNrID0gbG9nRW50cnkuc3RhY2tUcmFjZTtcblxuICAgICAgICAgICAgY29uc29sZU1ldGhvZChlcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlTWV0aG9kKGxvZ0VudHJ5Lm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXNpbmstY29uZmlndXJhdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2xvZ2dpbmcvbG9nZ2VyLXNpbmstY29uZmlndXJhdGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXZlcml0eUxldmVsIH0gZnJvbSAnLi9tb2RlbHMvc2V2ZXJpdHktbGV2ZWwuZW51bSc7XG5pbXBvcnQgeyBJTG9nZ2VyU2luayB9IGZyb20gJy4vbG9nZ2VyLXNpbmsuaW50ZXJmYWNlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLm1vZGVsJztcblxudHlwZSBMb2dnZXJTaW5rQ29uc3RydWN0b3IgPSB7XG4gICAgbmV3IChcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBsZXZlbDogU2V2ZXJpdHlMZXZlbCxcbiAgICAgICAgYXJncz86IHVua25vd24sXG4gICAgICAgIGxvZ2dlcj86IExvZ2dlcixcbiAgICAgICAgaW5qZWN0b3I/OiBJbmplY3RvclxuICAgICk6IElMb2dnZXJTaW5rO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyU2lua0NvbmZpZ3VyYXRpb24ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBMb2dnZXJTaW5rQ29uc3RydWN0b3I7XG4gICAgbGV2ZWw6IFNldmVyaXR5TGV2ZWw7XG4gICAgYXJnczogdW5rbm93bjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXNpbmsuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9sb2dnaW5nL2xvZ2dlci1zaW5rLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNsaWVudExvZ0VudHJ5IH0gZnJvbSAnLi9tb2RlbHMvY2xpZW50LWxvZy1lbnRyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2V2ZXJpdHlMZXZlbCB9IGZyb20gJy4vbW9kZWxzL3NldmVyaXR5LWxldmVsLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMb2dnZXJTaW5rIHtcbiAgICBsZXZlbDogU2V2ZXJpdHlMZXZlbDtcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICB3cml0ZShsb2dFbnRyeTogSUNsaWVudExvZ0VudHJ5KTogdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class Logger {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9sb2dnaW5nL2xvZ2dlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQWdCLE1BQU07Q0FLM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBPcHRpb25hbExvZ1BhcmFtZXRlcnMgPSB7XG4gICAgc3RhY2tUcmFjZT86IHN0cmluZztcbiAgICBkYXRhPzogdW5rbm93bjtcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2dnZXIge1xuICAgIGFic3RyYWN0IGxvZ0Vycm9yKG1lc3NhZ2U6IHN0cmluZyB8IEVycm9yLCBvcHRpb25zPzogT3B0aW9uYWxMb2dQYXJhbWV0ZXJzKTogdm9pZDtcbiAgICBhYnN0cmFjdCBsb2dJbmZvKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbmFsTG9nUGFyYW1ldGVycyk6IHZvaWQ7XG4gICAgYWJzdHJhY3QgbG9nVmVyYm9zZShtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBPcHRpb25hbExvZ1BhcmFtZXRlcnMpOiB2b2lkO1xuICAgIGFic3RyYWN0IGxvZ1dhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9uYWxMb2dQYXJhbWV0ZXJzKTogdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,127 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { SeverityLevel } from './models/severity-level.enum';
3
+ import { Uuid } from '../models/uuid.model';
4
+ import { ZonedDateTime } from '@js-joda/core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "../security/services/auth.service";
8
+ export class LoggerService {
9
+ static { this.overrideQueryStringRegex = /log\.(\w+)/; }
10
+ constructor(loggerSinkConfiguration, activatedRoute, authService, injector) {
11
+ this.loggerSinkConfiguration = loggerSinkConfiguration;
12
+ this.activatedRoute = activatedRoute;
13
+ this.authService = authService;
14
+ this.injector = injector;
15
+ this.sessionId = Uuid.create();
16
+ this.sinks = new Array();
17
+ this.minimumLevel = SeverityLevel.error;
18
+ this.readConfiguration();
19
+ this.activatedRoute.queryParams.subscribe(async (params) => {
20
+ const isDebug = this.authService.checkPolicy('debug');
21
+ if (isDebug) {
22
+ let updated = false;
23
+ for (const key of Object.keys(params)) {
24
+ const match = key.match(LoggerService.overrideQueryStringRegex);
25
+ if (match?.length === 2) {
26
+ const [paramName, sinkName] = match;
27
+ const sink = this.sinks.find(s => s.name === sinkName);
28
+ if (!sink) {
29
+ throw new Error(`Cannot find sink with name '${sinkName}'.`);
30
+ }
31
+ const value = params[paramName];
32
+ let level;
33
+ if (!value) {
34
+ throw new Error(`Missing value for query string parameter '${paramName}'.`);
35
+ }
36
+ else if (!(level = parseInt(value))) {
37
+ level =
38
+ SeverityLevel[value.toLowerCase()];
39
+ }
40
+ sink.level = level;
41
+ updated = true;
42
+ console.log(`Logging sink '${sinkName}' set to '${value}'.`);
43
+ }
44
+ }
45
+ if (updated) {
46
+ this.refreshSinks();
47
+ }
48
+ }
49
+ });
50
+ }
51
+ logError(message, options) {
52
+ if (typeof message === 'string') {
53
+ this.logWrite(SeverityLevel.error, message, options);
54
+ return;
55
+ }
56
+ const error = message;
57
+ this.logWrite(SeverityLevel.error, error.message, Object.assign({ stackTrace: error.stack }, options));
58
+ }
59
+ logInfo(message, options) {
60
+ this.logWrite(SeverityLevel.information, message, options);
61
+ }
62
+ logVerbose(message, options) {
63
+ this.logWrite(SeverityLevel.verbose, message, options);
64
+ }
65
+ logWarning(message, options) {
66
+ this.logWrite(SeverityLevel.warning, message, options);
67
+ }
68
+ logWrite(level, message, options) {
69
+ if (level < this.minimumLevel) {
70
+ return;
71
+ }
72
+ const logEntry = {
73
+ createdDateTime: ZonedDateTime.now().withFixedOffsetZone().toString(),
74
+ sessionId: this.sessionId,
75
+ severityLevel: level,
76
+ message: message,
77
+ stackTrace: options?.stackTrace,
78
+ url: window.location.href,
79
+ userAgent: navigator.userAgent,
80
+ jsonData: options?.data ? JSON.stringify(options.data) : undefined,
81
+ };
82
+ for (const sink of this.sinks) {
83
+ if (level >= sink.level) {
84
+ try {
85
+ sink.write(logEntry);
86
+ }
87
+ catch (error) {
88
+ this.logError(`Error writing log entry to sink '${sink.name}'.`, {
89
+ stackTrace: error.stack,
90
+ data: { sink: sink.name },
91
+ });
92
+ }
93
+ }
94
+ }
95
+ }
96
+ readConfiguration() {
97
+ const sinkConfigs = this.loggerSinkConfiguration;
98
+ if (sinkConfigs) {
99
+ for (const sinkConfig of sinkConfigs) {
100
+ this.requiredProperty(sinkConfig, 'name');
101
+ this.requiredProperty(sinkConfig, 'type');
102
+ this.requiredProperty(sinkConfig, 'level');
103
+ const sink = new sinkConfig.type(sinkConfig.name, sinkConfig.level, sinkConfig.args, this, this.injector);
104
+ this.sinks.push(sink);
105
+ }
106
+ this.refreshSinks();
107
+ }
108
+ }
109
+ refreshSinks() {
110
+ this.minimumLevel = this.sinks.reduce((l, s) => Math.min(l, s.level), SeverityLevel.critical);
111
+ }
112
+ requiredProperty(obj, propertyName) {
113
+ if (obj[propertyName] == null) {
114
+ throw new Error(`Missing required property '${propertyName}' in the logger section of environment.ts.`);
115
+ }
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggerService, deps: [{ token: 'loggerSinkConfiguration' }, { token: i1.ActivatedRoute }, { token: i2.AuthService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
118
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggerService, providedIn: 'root' }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggerService, decorators: [{
121
+ type: Injectable,
122
+ args: [{ providedIn: 'root' }]
123
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
124
+ type: Inject,
125
+ args: ['loggerSinkConfiguration']
126
+ }] }, { type: i1.ActivatedRoute }, { type: i2.AuthService }, { type: i0.Injector }] });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRzlDLE1BQU0sT0FBTyxhQUFhO2FBQ04sNkJBQXdCLEdBQUcsWUFBWSxBQUFmLENBQWdCO0lBT3hELFlBRVksdUJBQW1ELEVBQzFDLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLFFBQWtCO1FBSDNCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBNEI7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFWOUIsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQWUsQ0FBQztRQUUxQyxpQkFBWSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFTL0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTtZQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV0RCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLElBQUksT0FBTyxHQUFHLEtB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QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlY3VyaXR5L3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBJTG9nZ2VyU2luayB9IGZyb20gJy4vbG9nZ2VyLXNpbmsuaW50ZXJmYWNlJztcbmltcG9ydCB7IElMb2dnZXJTaW5rQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbG9nZ2VyLXNpbmstY29uZmlndXJhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9nZ2VyLCBPcHRpb25hbExvZ1BhcmFtZXRlcnMgfSBmcm9tICcuL2xvZ2dlci5tb2RlbCc7XG5pbXBvcnQgeyBTZXZlcml0eUxldmVsIH0gZnJvbSAnLi9tb2RlbHMvc2V2ZXJpdHktbGV2ZWwuZW51bSc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnLi4vbW9kZWxzL3V1aWQubW9kZWwnO1xuaW1wb3J0IHsgWm9uZWREYXRlVGltZSB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExvZ2dlclNlcnZpY2UgaW1wbGVtZW50cyBMb2dnZXIge1xuICAgIHN0YXRpYyByZWFkb25seSBvdmVycmlkZVF1ZXJ5U3RyaW5nUmVnZXggPSAvbG9nXFwuKFxcdyspLztcblxuICAgIHJlYWRvbmx5IHNlc3Npb25JZCA9IFV1aWQuY3JlYXRlKCk7XG4gICAgcmVhZG9ubHkgc2lua3MgPSBuZXcgQXJyYXk8SUxvZ2dlclNpbms+KCk7XG5cbiAgICBtaW5pbXVtTGV2ZWwgPSBTZXZlcml0eUxldmVsLmVycm9yO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoJ2xvZ2dlclNpbmtDb25maWd1cmF0aW9uJylcbiAgICAgICAgcHJpdmF0ZSBsb2dnZXJTaW5rQ29uZmlndXJhdGlvbjogSUxvZ2dlclNpbmtDb25maWd1cmF0aW9uW10sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWFkQ29uZmlndXJhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKGFzeW5jIHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0RlYnVnID0gdGhpcy5hdXRoU2VydmljZS5jaGVja1BvbGljeSgnZGVidWcnKTtcblxuICAgICAgICAgICAgaWYgKGlzRGVidWcpIHtcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGtleS5tYXRjaChMb2dnZXJTZXJ2aWNlLm92ZXJyaWRlUXVlcnlTdHJpbmdSZWdleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoPy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtwYXJhbU5hbWUsIHNpbmtOYW1lXSA9IG1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2luayA9IHRoaXMuc2lua3MuZmluZChzID0+IHMubmFtZSA9PT0gc2lua05hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHNpbmsgd2l0aCBuYW1lICcke3NpbmtOYW1lfScuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV2ZWw6IFNldmVyaXR5TGV2ZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBNaXNzaW5nIHZhbHVlIGZvciBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyICcke3BhcmFtTmFtZX0nLmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKGxldmVsID0gcGFyc2VJbnQodmFsdWUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V2ZXJpdHlMZXZlbFt2YWx1ZS50b0xvd2VyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBTZXZlcml0eUxldmVsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc2luay5sZXZlbCA9IGxldmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2dnaW5nIHNpbmsgJyR7c2lua05hbWV9JyBzZXQgdG8gJyR7dmFsdWV9Jy5gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNpbmtzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2dFcnJvcihtZXNzYWdlOiBzdHJpbmcgfCBFcnJvciwgb3B0aW9ucz86IE9wdGlvbmFsTG9nUGFyYW1ldGVycyk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ1dyaXRlKFNldmVyaXR5TGV2ZWwuZXJyb3IsIG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3IgPSBtZXNzYWdlIGFzIEVycm9yO1xuICAgICAgICB0aGlzLmxvZ1dyaXRlKFxuICAgICAgICAgICAgU2V2ZXJpdHlMZXZlbC5lcnJvcixcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHsgc3RhY2tUcmFjZTogZXJyb3Iuc3RhY2sgfSwgb3B0aW9ucylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsb2dJbmZvKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbmFsTG9nUGFyYW1ldGVycyk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvZ1dyaXRlKFNldmVyaXR5TGV2ZWwuaW5mb3JtYXRpb24sIG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGxvZ1ZlcmJvc2UobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9uYWxMb2dQYXJhbWV0ZXJzKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nV3JpdGUoU2V2ZXJpdHlMZXZlbC52ZXJib3NlLCBtZXNzYWdlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBsb2dXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbmFsTG9nUGFyYW1ldGVycyk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvZ1dyaXRlKFNldmVyaXR5TGV2ZWwud2FybmluZywgbWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dXcml0ZShsZXZlbDogU2V2ZXJpdHlMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9uYWxMb2dQYXJhbWV0ZXJzKTogdm9pZCB7XG4gICAgICAgIGlmIChsZXZlbCA8IHRoaXMubWluaW11bUxldmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2dFbnRyeSA9IHtcbiAgICAgICAgICAgIGNyZWF0ZWREYXRlVGltZTogWm9uZWREYXRlVGltZS5ub3coKS53aXRoRml4ZWRPZmZzZXRab25lKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5zZXNzaW9uSWQsXG4gICAgICAgICAgICBzZXZlcml0eUxldmVsOiBsZXZlbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICBzdGFja1RyYWNlOiBvcHRpb25zPy5zdGFja1RyYWNlLFxuICAgICAgICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICAgICAgIHVzZXJBZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAgIGpzb25EYXRhOiBvcHRpb25zPy5kYXRhID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5kYXRhKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGNvbnN0IHNpbmsgb2YgdGhpcy5zaW5rcykge1xuICAgICAgICAgICAgaWYgKGxldmVsID49IHNpbmsubGV2ZWwpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzaW5rLndyaXRlKGxvZ0VudHJ5KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ0Vycm9yKGBFcnJvciB3cml0aW5nIGxvZyBlbnRyeSB0byBzaW5rICcke3NpbmsubmFtZX0nLmAsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2U6IChlcnJvciBhcyBFcnJvcikuc3RhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IHNpbms6IHNpbmsubmFtZSB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaW5rQ29uZmlncyA9IHRoaXMubG9nZ2VyU2lua0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgaWYgKHNpbmtDb25maWdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNpbmtDb25maWcgb2Ygc2lua0NvbmZpZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkUHJvcGVydHkoc2lua0NvbmZpZywgJ25hbWUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkUHJvcGVydHkoc2lua0NvbmZpZywgJ3R5cGUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkUHJvcGVydHkoc2lua0NvbmZpZywgJ2xldmVsJyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzaW5rID0gbmV3IHNpbmtDb25maWcudHlwZShcbiAgICAgICAgICAgICAgICAgICAgc2lua0NvbmZpZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBzaW5rQ29uZmlnLmxldmVsLFxuICAgICAgICAgICAgICAgICAgICBzaW5rQ29uZmlnLmFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3JcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5rcy5wdXNoKHNpbmspO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTaW5rcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoU2lua3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWluaW11bUxldmVsID0gdGhpcy5zaW5rcy5yZWR1Y2UoXG4gICAgICAgICAgICAobCwgcykgPT4gTWF0aC5taW4obCwgcy5sZXZlbCksXG4gICAgICAgICAgICBTZXZlcml0eUxldmVsLmNyaXRpY2FsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXF1aXJlZFByb3BlcnR5KG9iajogdW5rbm93biwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKChvYmogYXMgbmV2ZXIpW3Byb3BlcnR5TmFtZV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5ICcke3Byb3BlcnR5TmFtZX0nIGluIHRoZSBsb2dnZXIgc2VjdGlvbiBvZiBlbnZpcm9ubWVudC50cy5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWxvZy1lbnRyeS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2xvZ2dpbmcvbW9kZWxzL2NsaWVudC1sb2ctZW50cnkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXZlcml0eUxldmVsIH0gZnJvbSAnLi9zZXZlcml0eS1sZXZlbC5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2xpZW50TG9nRW50cnkge1xuICAgIGNyZWF0ZWREYXRlVGltZTogc3RyaW5nO1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIHNldmVyaXR5TGV2ZWw6IFNldmVyaXR5TGV2ZWw7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrVHJhY2U/OiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAganNvbkRhdGE/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export var SeverityLevel;
2
+ (function (SeverityLevel) {
3
+ SeverityLevel[SeverityLevel["verbose"] = 0] = "verbose";
4
+ SeverityLevel[SeverityLevel["information"] = 1] = "information";
5
+ SeverityLevel[SeverityLevel["warning"] = 2] = "warning";
6
+ SeverityLevel[SeverityLevel["error"] = 3] = "error";
7
+ SeverityLevel[SeverityLevel["critical"] = 4] = "critical";
8
+ })(SeverityLevel || (SeverityLevel = {}));
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V2ZXJpdHktbGV2ZWwuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbG9nZ2luZy9tb2RlbHMvc2V2ZXJpdHktbGV2ZWwuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQU1YO0FBTkQsV0FBWSxhQUFhO0lBQ3JCLHVEQUFXLENBQUE7SUFDWCwrREFBZSxDQUFBO0lBQ2YsdURBQVcsQ0FBQTtJQUNYLG1EQUFTLENBQUE7SUFDVCx5REFBWSxDQUFBO0FBQ2hCLENBQUMsRUFOVyxhQUFhLEtBQWIsYUFBYSxRQU14QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNldmVyaXR5TGV2ZWwge1xuICAgIHZlcmJvc2UgPSAwLFxuICAgIGluZm9ybWF0aW9uID0gMSxcbiAgICB3YXJuaW5nID0gMixcbiAgICBlcnJvciA9IDMsXG4gICAgY3JpdGljYWwgPSA0LFxufVxuIl19
@@ -0,0 +1,51 @@
1
+ import { RestClient } from '../services/rest-client.service';
2
+ import { IntervalService } from '../services/interval.service';
3
+ export class ServerLoggerSink {
4
+ constructor(name, level, args, logger, injector) {
5
+ this.name = name;
6
+ this.level = level;
7
+ this.args = args;
8
+ this.logger = logger;
9
+ this.injector = injector;
10
+ this.retryCount = 10;
11
+ this.postFrequency = 15 * 1000 /*15 seconds*/;
12
+ this.entryBuffer = new Array();
13
+ this.errorCount = 0;
14
+ if (!args?.url) {
15
+ throw new Error(`Missing required argument 'url' for sink ${this.constructor.name}.`);
16
+ }
17
+ const intervalService = injector.get(IntervalService);
18
+ this.$interval = intervalService.create(() => this.flush(), this.postFrequency);
19
+ this.$interval.start();
20
+ }
21
+ write(logEntry) {
22
+ this.entryBuffer.push(logEntry);
23
+ }
24
+ async flush() {
25
+ if (this.entryBuffer.length === 0) {
26
+ return;
27
+ }
28
+ const mark = this.entryBuffer.length;
29
+ try {
30
+ await this.postLogEntries(this.entryBuffer);
31
+ this.entryBuffer = this.entryBuffer.slice(mark);
32
+ this.errorCount = 0;
33
+ }
34
+ catch (error) {
35
+ this.logger.logError(error);
36
+ if (this.errorCount++ > this.retryCount) {
37
+ this.$interval.stop();
38
+ throw new Error(`Error posting log entries to server. Retried ${this.retryCount} times and giving up.`);
39
+ }
40
+ }
41
+ }
42
+ postLogEntries(entries) {
43
+ const restClient = this.injector.get(RestClient);
44
+ const restOptions = Object.assign({}, this.args, {
45
+ body: entries,
46
+ showSpinner: false,
47
+ });
48
+ return restClient.post(this.args.url, restOptions);
49
+ }
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWxvZ2dlci5zaW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9sb2dnaW5nL3NlcnZlci1sb2dnZXIuc2luay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFpQixlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU85RSxNQUFNLE9BQU8sZ0JBQWdCO0lBU3pCLFlBQ29CLElBQVksRUFDckIsS0FBb0IsRUFDWCxJQUEyQixFQUMxQixNQUFjLEVBQ2QsUUFBa0I7UUFKbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQ1gsU0FBSSxHQUFKLElBQUksQ0FBdUI7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFidEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixrQkFBYSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBSTFELGdCQUFXLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFDM0MsZUFBVSxHQUFHLENBQUMsQ0FBQztRQVNYLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQWtCLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUF5QjtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUs7UUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFFckMsSUFBSSxDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBYyxDQUFDLENBQUM7WUFFckMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUNYLGlEQUFpRCxJQUFJLENBQUMsVUFBVSx1QkFBdUIsQ0FDMUYsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUEwQjtRQUM3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYSxVQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzdDLElBQUksRUFBRSxPQUFPO1lBQ2IsV0FBVyxFQUFFLEtBQUs7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTG9nZ2VyU2luayB9IGZyb20gJy4vbG9nZ2VyLXNpbmsuaW50ZXJmYWNlJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLm1vZGVsJztcbmltcG9ydCB7IElDbGllbnRMb2dFbnRyeSB9IGZyb20gJy4vbW9kZWxzL2NsaWVudC1sb2ctZW50cnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNldmVyaXR5TGV2ZWwgfSBmcm9tICcuL21vZGVscy9zZXZlcml0eS1sZXZlbC5lbnVtJztcbmltcG9ydCB7IFJlc3RDbGllbnQgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXN0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEludGVydmFsVGltZXIsIEludGVydmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVydmFsLnNlcnZpY2UnO1xuXG50eXBlIFNlcnZlckxvZ2dlckFyZ3VtZW50cyA9IHtcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgdXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgU2VydmVyTG9nZ2VyU2luayBpbXBsZW1lbnRzIElMb2dnZXJTaW5rIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJldHJ5Q291bnQgPSAxMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvc3RGcmVxdWVuY3kgPSAxNSAqIDEwMDAgLyoxNSBzZWNvbmRzKi87XG5cbiAgICAkaW50ZXJ2YWw6IEludGVydmFsVGltZXI7XG5cbiAgICBlbnRyeUJ1ZmZlciA9IG5ldyBBcnJheTxJQ2xpZW50TG9nRW50cnk+KCk7XG4gICAgZXJyb3JDb3VudCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGxldmVsOiBTZXZlcml0eUxldmVsLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgYXJnczogU2VydmVyTG9nZ2VyQXJndW1lbnRzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBpZiAoIWFyZ3M/LnVybCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50ICd1cmwnIGZvciBzaW5rICR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGludGVydmFsU2VydmljZSA9IGluamVjdG9yLmdldDxJbnRlcnZhbFNlcnZpY2U+KEludGVydmFsU2VydmljZSk7XG4gICAgICAgIHRoaXMuJGludGVydmFsID0gaW50ZXJ2YWxTZXJ2aWNlLmNyZWF0ZSgoKSA9PiB0aGlzLmZsdXNoKCksIHRoaXMucG9zdEZyZXF1ZW5jeSk7XG5cbiAgICAgICAgdGhpcy4kaW50ZXJ2YWwuc3RhcnQoKTtcbiAgICB9XG5cbiAgICB3cml0ZShsb2dFbnRyeTogSUNsaWVudExvZ0VudHJ5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW50cnlCdWZmZXIucHVzaChsb2dFbnRyeSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuZW50cnlCdWZmZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXJrID0gdGhpcy5lbnRyeUJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucG9zdExvZ0VudHJpZXModGhpcy5lbnRyeUJ1ZmZlcik7XG5cbiAgICAgICAgICAgIHRoaXMuZW50cnlCdWZmZXIgPSB0aGlzLmVudHJ5QnVmZmVyLnNsaWNlKG1hcmspO1xuICAgICAgICAgICAgdGhpcy5lcnJvckNvdW50ID0gMDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZ0Vycm9yKGVycm9yIGFzIEVycm9yKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZXJyb3JDb3VudCsrID4gdGhpcy5yZXRyeUNvdW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaW50ZXJ2YWwuc3RvcCgpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVycm9yIHBvc3RpbmcgbG9nIGVudHJpZXMgdG8gc2VydmVyLiAgUmV0cmllZCAke3RoaXMucmV0cnlDb3VudH0gdGltZXMgYW5kIGdpdmluZyB1cC5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcG9zdExvZ0VudHJpZXMoZW50cmllczogSUNsaWVudExvZ0VudHJ5W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcmVzdENsaWVudCA9IHRoaXMuaW5qZWN0b3IuZ2V0PFJlc3RDbGllbnQ+KFJlc3RDbGllbnQpO1xuICAgICAgICBjb25zdCByZXN0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuYXJncywge1xuICAgICAgICAgICAgYm9keTogZW50cmllcyxcbiAgICAgICAgICAgIHNob3dTcGlubmVyOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3RDbGllbnQucG9zdCh0aGlzLmFyZ3MudXJsLCByZXN0T3B0aW9ucyk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhY3RpdmF0YWJsZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL21vZGVscy9kZWFjdGl2YXRhYmxlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElEZWFjdGl2YXRhYmxlIHtcbiAgICBvbkRlYWN0aXZhdGU6ICgpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ export class Uuid {
2
+ static create() {
3
+ const bytes = crypto.getRandomValues(new Uint8Array(16));
4
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
5
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
6
+ let index = 0;
7
+ return (Uuid.toHex(bytes[index++]) +
8
+ Uuid.toHex(bytes[index++]) +
9
+ Uuid.toHex(bytes[index++]) +
10
+ Uuid.toHex(bytes[index++]) +
11
+ '-' +
12
+ Uuid.toHex(bytes[index++]) +
13
+ Uuid.toHex(bytes[index++]) +
14
+ '-' +
15
+ Uuid.toHex(bytes[index++]) +
16
+ Uuid.toHex(bytes[index++]) +
17
+ '-' +
18
+ Uuid.toHex(bytes[index++]) +
19
+ Uuid.toHex(bytes[index++]) +
20
+ '-' +
21
+ Uuid.toHex(bytes[index++]) +
22
+ Uuid.toHex(bytes[index++]) +
23
+ Uuid.toHex(bytes[index++]) +
24
+ Uuid.toHex(bytes[index++]) +
25
+ Uuid.toHex(bytes[index++]) +
26
+ Uuid.toHex(bytes[index++]));
27
+ }
28
+ static toHex(byte) {
29
+ return (0x100 | byte).toString(16).substr(1);
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvbW9kZWxzL3V1aWQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLElBQUk7SUFDTixNQUFNLENBQUMsTUFBTTtRQUNoQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNwQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRXBDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLE9BQU8sQ0FDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUc7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUIsR0FBRztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxQixHQUFHO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUc7WUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUM3QixDQUFDO0lBQ04sQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBWTtRQUM3QixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFV1aWQge1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGJ5dGVzID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxNikpO1xuICAgICAgICBieXRlc1s2XSA9IChieXRlc1s2XSAmIDB4MGYpIHwgMHg0MDtcbiAgICAgICAgYnl0ZXNbOF0gPSAoYnl0ZXNbOF0gJiAweDNmKSB8IDB4ODA7XG5cbiAgICAgICAgbGV0IGluZGV4ID0gMDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgVXVpZC50b0hleChieXRlc1tpbmRleCsrXSkgK1xuICAgICAgICAgICAgVXVpZC50b0hleChieXRlc1tpbmRleCsrXSkgK1xuICAgICAgICAgICAgVXVpZC50b0hleChieXRlc1tpbmRleCsrXSkgK1xuICAgICAgICAgICAgVXVpZC50b0hleChieXRlc1tpbmRleCsrXSkgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICBVdWlkLnRvSGV4KGJ5dGVzW2luZGV4KytdKSArXG4gICAgICAgICAgICBVdWlkLnRvSGV4KGJ5dGVzW2luZGV4KytdKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgVXVpZC50b0hleChieXRlc1tpbmRleCsrXSkgK1xuICAgICAgICAgICAgVXVpZC50b0hleChieXRlc1tpbmRleCsrXSkgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pICtcbiAgICAgICAgICAgIFV1aWQudG9IZXgoYnl0ZXNbaW5kZXgrK10pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgdG9IZXgoYnl0ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICgweDEwMCB8IGJ5dGUpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../services/auth.service";
4
+ export class AuthCallbackComponent {
5
+ constructor(authService) {
6
+ this.authService = authService;
7
+ }
8
+ ngOnInit() {
9
+ return this.authService.completeAuthentication();
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthCallbackComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuthCallbackComponent, selector: "app-auth-callback", ngImport: i0, template: "" }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthCallbackComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'app-auth-callback', template: "" }]
17
+ }], ctorParameters: () => [{ type: i1.AuthService }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jYWxsYmFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL3NlY3VyaXR5L2F1dGgtY2FsbGJhY2svYXV0aC1jYWxsYmFjay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL3NlY3VyaXR5L2F1dGgtY2FsbGJhY2svYXV0aC1jYWxsYmFjay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFPbEQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFaEQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7K0dBTFEscUJBQXFCO21HQUFyQixxQkFBcUIseURDUGxDLEVBQUE7OzRGRE9hLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDSSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1hdXRoLWNhbGxiYWNrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1jYWxsYmFjay5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhDYWxsYmFja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuY29tcGxldGVBdXRoZW50aWNhdGlvbigpO1xuICAgIH1cbn1cbiIsIiJdfQ==
@@ -0,0 +1,84 @@
1
+ export class AuthUser {
2
+ static { this.anonymous = new AuthUser(); }
3
+ /**
4
+ * Constructs a user object from a given oidc user object.
5
+ *
6
+ * @param oidcUser The oidc user object.
7
+ */
8
+ constructor(oidcUser = null) {
9
+ this.oidcUser = oidcUser;
10
+ this.oidcUser = oidcUser;
11
+ if (oidcUser == null) {
12
+ this.isAuthenticated = false;
13
+ }
14
+ else {
15
+ this.isAuthenticated = true;
16
+ this.authorizationHeader = `${oidcUser.token_type} ${oidcUser.access_token}`;
17
+ this.name = oidcUser.profile?.name;
18
+ this.firstName = oidcUser.profile?.given_name;
19
+ this.lastName = oidcUser.profile?.family_name;
20
+ this.fullName = `${this.firstName} ${this.lastName}`;
21
+ }
22
+ }
23
+ /**
24
+ * Gets the raw claims associated with the user.
25
+ */
26
+ get claims() {
27
+ return this.oidcUser?.profile || {};
28
+ }
29
+ /**
30
+ * Determines whether the currently authenticated user is in any of an
31
+ * array of roles.
32
+ *
33
+ * @param roles An array of required roles.
34
+ * @returns True if the user has any of the required roles, false otherwise.
35
+ */
36
+ hasAnyRole(...roles) {
37
+ const roleClaim = this.claims['role'];
38
+ if (roleClaim == null) {
39
+ return false;
40
+ }
41
+ const claimRoles = Array.isArray(roleClaim) ? roleClaim : [roleClaim];
42
+ return roles.some(r => claimRoles.some(cr => r.toLowerCase() === cr.toLowerCase()));
43
+ }
44
+ /**
45
+ * Determines whether the currently authenticated user has a claim,
46
+ * and optionally, whether the claim has a specific value.
47
+ *
48
+ * @param claimType Claim type to match
49
+ * @param claimValue Optional claim value to match
50
+ *
51
+ * @returns True if the user has the required claim, false otherwise.
52
+ */
53
+ hasClaim(claimType, claimValue) {
54
+ const value = this.claims[claimType];
55
+ return !!value && (!claimValue || value === claimValue);
56
+ }
57
+ /**
58
+ * Determines whether the currently authenticated user is a customer.
59
+ */
60
+ get isCustomer() {
61
+ return this.hasClaim('ch:customer');
62
+ }
63
+ /**
64
+ * Determines whether the currently authenticated user is an employee.
65
+ */
66
+ get isEmployee() {
67
+ return this.hasAnyRole('ch:Employee');
68
+ }
69
+ /**
70
+ * Creates a user object given an oidc user object.
71
+ *
72
+ * @param oidcUser The oidc user object.
73
+ * @returns A user object for the given oidc user object. If no oidc
74
+ * user object is specified or it has expired, returns the anonymous
75
+ * user.
76
+ */
77
+ static from(oidcUser) {
78
+ if (oidcUser === null || oidcUser.expired) {
79
+ return AuthUser.anonymous;
80
+ }
81
+ return new AuthUser(oidcUser);
82
+ }
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC11c2VyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9zZWN1cml0eS9tb2RlbHMvYXV0aC11c2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxRQUFRO2FBQ00sY0FBUyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFTbEQ7Ozs7T0FJRztJQUNILFlBQXFDLFdBQTRCLElBQUk7UUFBaEMsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3RSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekQsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsR0FBRyxLQUFlO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEMsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksUUFBUSxDQUFDLFNBQWlCLEVBQUUsVUFBbUI7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxLQUFLLEtBQUssVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUF5QjtRQUN4QyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlciBhcyBPaWRjVXNlciB9IGZyb20gJ29pZGMtY2xpZW50JztcbmltcG9ydCB7IEluZGV4YWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL2luZGV4YWJsZS50eXBlJztcblxuZXhwb3J0IGNsYXNzIEF1dGhVc2VyIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGFub255bW91cyA9IG5ldyBBdXRoVXNlcigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXphdGlvbkhlYWRlcj86IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlyc3ROYW1lPzogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBsYXN0TmFtZT86IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgZnVsbE5hbWU/OiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgdXNlciBvYmplY3QgZnJvbSBhIGdpdmVuIG9pZGMgdXNlciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2lkY1VzZXIgVGhlIG9pZGMgdXNlciBvYmplY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9pZGNVc2VyOiBPaWRjVXNlciB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHRoaXMub2lkY1VzZXIgPSBvaWRjVXNlcjtcblxuICAgICAgICBpZiAob2lkY1VzZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbkhlYWRlciA9IGAke29pZGNVc2VyLnRva2VuX3R5cGV9ICR7b2lkY1VzZXIuYWNjZXNzX3Rva2VufWA7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSBvaWRjVXNlci5wcm9maWxlPy5uYW1lO1xuICAgICAgICAgICAgdGhpcy5maXJzdE5hbWUgPSBvaWRjVXNlci5wcm9maWxlPy5naXZlbl9uYW1lO1xuICAgICAgICAgICAgdGhpcy5sYXN0TmFtZSA9IG9pZGNVc2VyLnByb2ZpbGU/LmZhbWlseV9uYW1lO1xuICAgICAgICAgICAgdGhpcy5mdWxsTmFtZSA9IGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHJhdyBjbGFpbXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2xhaW1zKCk6IEluZGV4YWJsZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9pZGNVc2VyPy5wcm9maWxlIHx8IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlciBpcyBpbiBhbnkgb2YgYW5cbiAgICAgKiBhcnJheSBvZiByb2xlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb2xlcyBBbiBhcnJheSBvZiByZXF1aXJlZCByb2xlcy5cbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB1c2VyIGhhcyBhbnkgb2YgdGhlIHJlcXVpcmVkIHJvbGVzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhc0FueVJvbGUoLi4ucm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJvbGVDbGFpbSA9IHRoaXMuY2xhaW1zWydyb2xlJ107XG5cbiAgICAgICAgaWYgKHJvbGVDbGFpbSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGFpbVJvbGVzID0gQXJyYXkuaXNBcnJheShyb2xlQ2xhaW0pID8gcm9sZUNsYWltIDogW3JvbGVDbGFpbV07XG4gICAgICAgIHJldHVybiByb2xlcy5zb21lKHIgPT4gY2xhaW1Sb2xlcy5zb21lKGNyID0+IHIudG9Mb3dlckNhc2UoKSA9PT0gY3IudG9Mb3dlckNhc2UoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlciBoYXMgYSBjbGFpbSxcbiAgICAgKiBhbmQgb3B0aW9uYWxseSwgd2hldGhlciB0aGUgY2xhaW0gaGFzIGEgc3BlY2lmaWMgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2xhaW1UeXBlIENsYWltIHR5cGUgdG8gbWF0Y2hcbiAgICAgKiBAcGFyYW0gY2xhaW1WYWx1ZSBPcHRpb25hbCBjbGFpbSB2YWx1ZSB0byBtYXRjaFxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdXNlciBoYXMgdGhlIHJlcXVpcmVkIGNsYWltLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhc0NsYWltKGNsYWltVHlwZTogc3RyaW5nLCBjbGFpbVZhbHVlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jbGFpbXNbY2xhaW1UeXBlXTtcbiAgICAgICAgcmV0dXJuICEhdmFsdWUgJiYgKCFjbGFpbVZhbHVlIHx8IHZhbHVlID09PSBjbGFpbVZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnRseSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgYSBjdXN0b21lci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzQ3VzdG9tZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NsYWltKCdjaDpjdXN0b21lcicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlciBpcyBhbiBlbXBsb3llZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRW1wbG95ZWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVJvbGUoJ2NoOkVtcGxveWVlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHVzZXIgb2JqZWN0IGdpdmVuIGFuIG9pZGMgdXNlciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2lkY1VzZXIgVGhlIG9pZGMgdXNlciBvYmplY3QuXG4gICAgICogQHJldHVybnMgQSB1c2VyIG9iamVjdCBmb3IgdGhlIGdpdmVuIG9pZGMgdXNlciBvYmplY3QuICBJZiBubyBvaWRjXG4gICAgICogdXNlciBvYmplY3QgaXMgc3BlY2lmaWVkIG9yIGl0IGhhcyBleHBpcmVkLCByZXR1cm5zIHRoZSBhbm9ueW1vdXNcbiAgICAgKiB1c2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbShvaWRjVXNlcjogT2lkY1VzZXIgfCBudWxsKTogQXV0aFVzZXIge1xuICAgICAgICBpZiAob2lkY1VzZXIgPT09IG51bGwgfHwgb2lkY1VzZXIuZXhwaXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIEF1dGhVc2VyLmFub255bW91cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgQXV0aFVzZXIob2lkY1VzZXIpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export class AuthorizationContext {
2
+ constructor(user) {
3
+ this.user = user;
4
+ }
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi1jb250ZXh0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9zZWN1cml0eS9tb2RlbHMvYXV0aG9yaXphdGlvbi1jb250ZXh0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsWUFBNEIsSUFBYztRQUFkLFNBQUksR0FBSixJQUFJLENBQVU7SUFBRyxDQUFDO0NBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aFVzZXIgfSBmcm9tICcuL2F1dGgtdXNlci5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uQ29udGV4dCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHVzZXI6IEF1dGhVc2VyKSB7fVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ export class SecurityPolicy {
2
+ constructor(name, requirement) {
3
+ this.name = name;
4
+ this.requirement = requirement;
5
+ this._succeeded = false;
6
+ }
7
+ get succeeded() {
8
+ return this._succeeded;
9
+ }
10
+ evaluate(context) {
11
+ this._succeeded = this.requirement(context);
12
+ return this._succeeded;
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktcG9saWN5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9zZWN1cml0eS9tb2RlbHMvc2VjdXJpdHktcG9saWN5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxjQUFjO0lBR3ZCLFlBQ29CLElBQVksRUFDWCxXQUF1RDtRQUR4RCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1gsZ0JBQVcsR0FBWCxXQUFXLENBQTRDO1FBSnBFLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFLeEIsQ0FBQztJQUVKLElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUE2QjtRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhvcml6YXRpb25Db250ZXh0IH0gZnJvbSAnLi9hdXRob3JpemF0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlQb2xpY3kge1xuICAgIHByaXZhdGUgX3N1Y2NlZWRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWlyZW1lbnQ6IChjb250ZXh0OiBBdXRob3JpemF0aW9uQ29udGV4dCkgPT4gYm9vbGVhblxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXQgc3VjY2VlZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VjY2VlZGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBldmFsdWF0ZShjb250ZXh0OiBBdXRob3JpemF0aW9uQ29udGV4dCk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLl9zdWNjZWVkZWQgPSB0aGlzLnJlcXVpcmVtZW50KGNvbnRleHQpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VjY2VlZGVkO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const SECURITY_POLICIES = new InjectionToken('');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktcG9saWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL3NlY3VyaXR5L3NlY3VyaXR5LXBvbGljaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQW1CLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlY3VyaXR5UG9saWN5IH0gZnJvbSAnLi9tb2RlbHMvc2VjdXJpdHktcG9saWN5Lm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IFNFQ1VSSVRZX1BPTElDSUVTID0gbmV3IEluamVjdGlvblRva2VuPFNlY3VyaXR5UG9saWN5W10+KCcnKTtcbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./auth.service";
4
+ import * as i2 from "ngx-toastr";
5
+ export class AuthGuardService {
6
+ constructor(authService, toastr) {
7
+ this.authService = authService;
8
+ this.toastr = toastr;
9
+ }
10
+ async canActivate(route, state) {
11
+ if (await this.authService.checkIsAuthenticated()) {
12
+ const routePolicy = route.data['policy'];
13
+ if (!routePolicy) {
14
+ return true;
15
+ }
16
+ if (!this.authService.checkPolicy(routePolicy)) {
17
+ this.toastr.error("Oops! It doesn't look like you are authorized to access this page.");
18
+ return false;
19
+ }
20
+ return true;
21
+ }
22
+ await this.authService.startAuthentication(state.url);
23
+ return false;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuardService, deps: [{ token: i1.AuthService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuardService, providedIn: 'root' }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuardService, decorators: [{
29
+ type: Injectable,
30
+ args: [{ providedIn: 'root' }]
31
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ToastrService }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9zZWN1cml0eS9zZXJ2aWNlcy9hdXRoLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU0zQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQ1ksV0FBd0IsRUFDeEIsTUFBcUI7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUM5QixDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVcsQ0FDcEIsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQ2hELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFXLENBQUM7WUFFbkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNmLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Isb0VBQW9FLENBQ3ZFLENBQUM7Z0JBQ0YsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBN0JRLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FuQWN0aXZhdGUoXG4gICAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5hdXRoU2VydmljZS5jaGVja0lzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZVBvbGljeSA9IHJvdXRlLmRhdGFbJ3BvbGljeSddIGFzIHN0cmluZztcblxuICAgICAgICAgICAgaWYgKCFyb3V0ZVBvbGljeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuY2hlY2tQb2xpY3kocm91dGVQb2xpY3kpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIFwiT29wcyEgSXQgZG9lc24ndCBsb29rIGxpa2UgeW91IGFyZSBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGlzIHBhZ2UuXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLmF1dGhTZXJ2aWNlLnN0YXJ0QXV0aGVudGljYXRpb24oc3RhdGUudXJsKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==