@devopmaat/badaboom 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/fesm2022/devopmaat-badaboom.mjs +154 -154
  2. package/fesm2022/devopmaat-badaboom.mjs.map +1 -1
  3. package/lib/styles/_core-theme.scss +6 -5
  4. package/lib/styles/_theme.scss +2 -2
  5. package/package.json +4 -6
  6. package/esm2022/devopmaat-badaboom.mjs +0 -5
  7. package/esm2022/lib/application/common/bdb-data-source.mjs +0 -42
  8. package/esm2022/lib/application/common/full-table/bdb-full-table.component.mjs +0 -57
  9. package/esm2022/lib/application/common/paginator/bdb-paginator.component.mjs +0 -37
  10. package/esm2022/lib/application/common/query-input/bdb-query-input.component.mjs +0 -44
  11. package/esm2022/lib/application/common/search/bdb-search-wrapper.component.mjs +0 -33
  12. package/esm2022/lib/application/common/search/bdb-search.component.mjs +0 -163
  13. package/esm2022/lib/application/common/table/bdb-cell.directive.mjs +0 -20
  14. package/esm2022/lib/application/common/table/bdb-column-builder.mjs +0 -100
  15. package/esm2022/lib/application/common/table/bdb-column-options.mjs +0 -2
  16. package/esm2022/lib/application/common/table/bdb-column-type.mjs +0 -12
  17. package/esm2022/lib/application/common/table/bdb-column.mjs +0 -2
  18. package/esm2022/lib/application/common/table/bdb-context-action.mjs +0 -2
  19. package/esm2022/lib/application/common/table/bdb-table.component.mjs +0 -192
  20. package/esm2022/lib/application/common/table/dynamic.pipe.mjs +0 -26
  21. package/esm2022/lib/application/exception-log/exception-log-table/exception-log-table.component.mjs +0 -49
  22. package/esm2022/lib/application/task-log/task-log-outcome.pipe.mjs +0 -31
  23. package/esm2022/lib/application/task-log/task-log-status.pipe.mjs +0 -29
  24. package/esm2022/lib/application/task-log-parameter/task-log-parameter-value.pipe.mjs +0 -49
  25. package/esm2022/lib/application/user/user-table/user-table.component.mjs +0 -68
  26. package/esm2022/lib/bdb-auth-options.mjs +0 -39
  27. package/esm2022/lib/bdb-options.mjs +0 -25
  28. package/esm2022/lib/common/alert/bdb-alert.component.mjs +0 -40
  29. package/esm2022/lib/common/alert-error-response/bdb-alert-error-response.component.mjs +0 -108
  30. package/esm2022/lib/common/bdb-flex-child.directive.mjs +0 -24
  31. package/esm2022/lib/common/bdb-flex.directive.mjs +0 -112
  32. package/esm2022/lib/common/bdb-form-error.directive.mjs +0 -74
  33. package/esm2022/lib/common/bdb-grid-child.directive.mjs +0 -81
  34. package/esm2022/lib/common/bdb-grid.directive.mjs +0 -107
  35. package/esm2022/lib/common/bdb-palette.mjs +0 -2
  36. package/esm2022/lib/common/boolean-display/bdb-boolean-display.component.mjs +0 -23
  37. package/esm2022/lib/common/collapse-row/collapse-row.component.mjs +0 -31
  38. package/esm2022/lib/common/color.mjs +0 -26
  39. package/esm2022/lib/common/constructor.mjs +0 -2
  40. package/esm2022/lib/common/field/bdb-field.component.mjs +0 -20
  41. package/esm2022/lib/common/function.pipe.mjs +0 -20
  42. package/esm2022/lib/common/layout-error.mjs +0 -6
  43. package/esm2022/lib/common/linked-list.mjs +0 -53
  44. package/esm2022/lib/common/plain-number-pipe.mjs +0 -20
  45. package/esm2022/lib/domain/auth/account-info.mjs +0 -2
  46. package/esm2022/lib/domain/auth/account.service.mjs +0 -32
  47. package/esm2022/lib/domain/auth/auth.service.mjs +0 -119
  48. package/esm2022/lib/domain/auth/reset-password-token.mjs +0 -2
  49. package/esm2022/lib/domain/auth/token-expired.interceptor.mjs +0 -21
  50. package/esm2022/lib/domain/auth/token-reponse.mjs +0 -2
  51. package/esm2022/lib/domain/auth/token.interceptor.mjs +0 -17
  52. package/esm2022/lib/domain/common/bdb-filter.mjs +0 -2
  53. package/esm2022/lib/domain/common/bdb-request.mjs +0 -2
  54. package/esm2022/lib/domain/common/bdb-response.mjs +0 -2
  55. package/esm2022/lib/domain/common/entities/bdb-entity-read.mjs +0 -2
  56. package/esm2022/lib/domain/common/entities/bdb-entity-update.mjs +0 -2
  57. package/esm2022/lib/domain/common/entities/bdb-entity.mjs +0 -2
  58. package/esm2022/lib/domain/common/services/bdb-service-cr.mjs +0 -7
  59. package/esm2022/lib/domain/common/services/bdb-service-crd.mjs +0 -7
  60. package/esm2022/lib/domain/common/services/bdb-service-cru.mjs +0 -7
  61. package/esm2022/lib/domain/common/services/bdb-service-crud.mjs +0 -7
  62. package/esm2022/lib/domain/common/services/bdb-service-r.mjs +0 -10
  63. package/esm2022/lib/domain/common/services/bdb-service-rd.mjs +0 -7
  64. package/esm2022/lib/domain/common/services/bdb-service-ru.mjs +0 -7
  65. package/esm2022/lib/domain/common/services/bdb-service-rud.mjs +0 -7
  66. package/esm2022/lib/domain/common/services/bdb-service.mjs +0 -11
  67. package/esm2022/lib/domain/entities/exception-log/exception-log-read.mjs +0 -2
  68. package/esm2022/lib/domain/entities/exception-log/exception-log.mjs +0 -2
  69. package/esm2022/lib/domain/entities/exception-log/exception-log.service.mjs +0 -17
  70. package/esm2022/lib/domain/entities/media/media-read.mjs +0 -2
  71. package/esm2022/lib/domain/entities/media/media.mjs +0 -2
  72. package/esm2022/lib/domain/entities/media/media.service.mjs +0 -27
  73. package/esm2022/lib/domain/entities/role/role-read.mjs +0 -2
  74. package/esm2022/lib/domain/entities/role/role.mjs +0 -2
  75. package/esm2022/lib/domain/entities/role/role.service.mjs +0 -17
  76. package/esm2022/lib/domain/entities/task-log/task-log-create.mjs +0 -2
  77. package/esm2022/lib/domain/entities/task-log/task-log-read.mjs +0 -2
  78. package/esm2022/lib/domain/entities/task-log/task-log.mjs +0 -2
  79. package/esm2022/lib/domain/entities/task-log/task-log.service.mjs +0 -20
  80. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter-create.mjs +0 -2
  81. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter-read.mjs +0 -2
  82. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter.mjs +0 -2
  83. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter.service.mjs +0 -17
  84. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-create.mjs +0 -2
  85. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-read.mjs +0 -2
  86. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-update.mjs +0 -2
  87. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule.mjs +0 -2
  88. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule.service.mjs +0 -17
  89. package/esm2022/lib/domain/entities/user/user-create.mjs +0 -2
  90. package/esm2022/lib/domain/entities/user/user-read.mjs +0 -2
  91. package/esm2022/lib/domain/entities/user/user-update.mjs +0 -2
  92. package/esm2022/lib/domain/entities/user/user.mjs +0 -2
  93. package/esm2022/lib/domain/entities/user/user.service.mjs +0 -17
  94. package/esm2022/lib/domain/entities/user-role/user-role-create.mjs +0 -2
  95. package/esm2022/lib/domain/entities/user-role/user-role-read.mjs +0 -2
  96. package/esm2022/lib/domain/entities/user-role/user-role.mjs +0 -2
  97. package/esm2022/lib/domain/entities/user-role/user-role.service.mjs +0 -17
  98. package/esm2022/lib/domain/enums/media-type.mjs +0 -7
  99. package/esm2022/lib/domain/enums/task-log-outcome.mjs +0 -9
  100. package/esm2022/lib/domain/enums/task-log-parameter-type.mjs +0 -8
  101. package/esm2022/lib/domain/enums/task-log-status.mjs +0 -8
  102. package/esm2022/lib/domain/tasks/task-log-scheduler.service.mjs +0 -26
  103. package/esm2022/lib/domain/tasks/task-log-type-parameter.mjs +0 -2
  104. package/esm2022/lib/domain/tasks/task-log-type.mjs +0 -2
  105. package/esm2022/lib/domain/tasks/task-log-type.service.mjs +0 -44
  106. package/esm2022/lib/lib.config.mjs +0 -67
  107. package/esm2022/lib/presentation/access-denied-page/access-denied-page.component.mjs +0 -51
  108. package/esm2022/lib/presentation/auth-container/auth-container.component.mjs +0 -12
  109. package/esm2022/lib/presentation/forgot-password-page/forgot-password-page.component.mjs +0 -75
  110. package/esm2022/lib/presentation/invalid-token-page/invalid-token-page.component.mjs +0 -26
  111. package/esm2022/lib/presentation/logged-out.guard.mjs +0 -16
  112. package/esm2022/lib/presentation/login-page/login-page.component.mjs +0 -90
  113. package/esm2022/lib/presentation/logout-page/logout-page.component.mjs +0 -33
  114. package/esm2022/lib/presentation/reset-password-page/reset-password-page.component.mjs +0 -102
  115. package/esm2022/lib/presentation/reset-password.resolver.mjs +0 -25
  116. package/esm2022/lib/presentation/role.guard.mjs +0 -28
  117. package/esm2022/public-api.mjs +0 -112
@@ -1,90 +0,0 @@
1
- import { Inject, Component } from '@angular/core';
2
- import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
3
- import { MatFormFieldModule } from '@angular/material/form-field';
4
- import { MatInputModule } from '@angular/material/input';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { BDB_OPTIONS } from '../../bdb-options';
7
- import { RouterLink } from '@angular/router';
8
- import { MatButtonModule } from '@angular/material/button';
9
- import { MatCardModule } from '@angular/material/card';
10
- import { BdbFlexDirective } from '../../common/bdb-flex.directive';
11
- import { CommonModule } from '@angular/common';
12
- import { BdbFormErrorDirective } from '../../common/bdb-form-error.directive';
13
- import { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/router";
16
- import * as i2 from "../../domain/auth/auth.service";
17
- import * as i3 from "@angular/forms";
18
- import * as i4 from "@angular/material/form-field";
19
- import * as i5 from "@angular/material/input";
20
- import * as i6 from "@angular/material/icon";
21
- import * as i7 from "@angular/material/button";
22
- import * as i8 from "@angular/material/card";
23
- export class LoginPageComponent {
24
- constructor(router, authService, route, bdbOptions) {
25
- this.router = router;
26
- this.authService = authService;
27
- this.route = route;
28
- this.emailCtrl = new FormControl('', {
29
- validators: [Validators.required, Validators.email],
30
- nonNullable: true,
31
- });
32
- this.passwordCtrl = new FormControl('', { validators: [Validators.required], nonNullable: true });
33
- this.postLoginUrl = '/';
34
- this.isPending = false;
35
- this.loginForm = new FormGroup({
36
- email: this.emailCtrl,
37
- password: this.passwordCtrl,
38
- });
39
- this.forgotPasswordRoutePath = bdbOptions.authOptions?.forgotPasswordPath;
40
- }
41
- ngOnInit() {
42
- this.route.queryParams.subscribe({
43
- next: x => (this.postLoginUrl = x['returnUrl'] ?? '/'),
44
- });
45
- }
46
- login() {
47
- this.loginForm.markAllAsTouched();
48
- if (this.isPending || !this.loginForm.valid) {
49
- return;
50
- }
51
- this.isPending = true;
52
- this.error = undefined;
53
- const formValue = this.loginForm.getRawValue();
54
- this.loginForm.disable();
55
- this.authService.login(formValue).subscribe({
56
- next: () => {
57
- this.isPending = false;
58
- this.loginForm.enable();
59
- this.router.navigate([this.postLoginUrl]);
60
- },
61
- error: e => {
62
- this.error = e;
63
- this.isPending = false;
64
- this.loginForm.enable();
65
- },
66
- });
67
- }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoginPageComponent, deps: [{ token: i1.Router }, { token: i2.AuthService }, { token: i1.ActivatedRoute }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: LoginPageComponent, isStandalone: true, selector: "bdb-login-page", ngImport: i0, template: "<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>login</mat-icon>\r\n <span>Inloggen</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.login-form-error-response{margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i8.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value"] }, { kind: "directive", type: BdbFlexDirective, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: ["bdbFlex", "bdbFlexDirection", "bdbFlexGap", "bdbFlexSpacing"] }, { kind: "directive", type: BdbFormErrorDirective, selector: "[bdbFormError]", inputs: ["bdbFormError"] }] }); }
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoginPageComponent, decorators: [{
72
- type: Component,
73
- args: [{ selector: 'bdb-login-page', standalone: true, imports: [
74
- CommonModule,
75
- ReactiveFormsModule,
76
- MatFormFieldModule,
77
- MatInputModule,
78
- MatIconModule,
79
- MatButtonModule,
80
- RouterLink,
81
- MatCardModule,
82
- BdbAlertErrorResponseComponent,
83
- BdbFlexDirective,
84
- BdbFormErrorDirective,
85
- ], template: "<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>login</mat-icon>\r\n <span>Inloggen</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.login-form-error-response{margin:8px 0}\n"] }]
86
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.AuthService }, { type: i1.ActivatedRoute }, { type: undefined, decorators: [{
87
- type: Inject,
88
- args: [BDB_OPTIONS]
89
- }] }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL3ByZXNlbnRhdGlvbi9sb2dpbi1wYWdlL2xvZ2luLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9wcmVzZW50YXRpb24vbG9naW4tcGFnZS9sb2dpbi1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBRTVELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0VBQXNFLENBQUM7Ozs7Ozs7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LElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsOEJBQThCO3dCQUM5QixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjtxQkFDdEI7OzBCQTRCRSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBCREJfT1BUSU9OUywgQmRiT3B0aW9ucyB9IGZyb20gJy4uLy4uL2JkYi1vcHRpb25zJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9hdXRoL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcclxuaW1wb3J0IHsgQmRiRmxleERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iZGItZmxleC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCZGJGb3JtRXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9jb21tb24vYmRiLWZvcm0tZXJyb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmRiQWxlcnRFcnJvclJlc3BvbnNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2FsZXJ0LWVycm9yLXJlc3BvbnNlL2JkYi1hbGVydC1lcnJvci1yZXNwb25zZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiZGItbG9naW4tcGFnZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgUm91dGVyTGluayxcclxuICAgIE1hdENhcmRNb2R1bGUsXHJcbiAgICBCZGJBbGVydEVycm9yUmVzcG9uc2VDb21wb25lbnQsXHJcbiAgICBCZGJGbGV4RGlyZWN0aXZlLFxyXG4gICAgQmRiRm9ybUVycm9yRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ2luUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9yZ290UGFzc3dvcmRSb3V0ZVBhdGg/OiBzdHJpbmc7XHJcblxyXG4gIGVtYWlsQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJywge1xyXG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdLFxyXG4gICAgbm9uTnVsbGFibGU6IHRydWUsXHJcbiAgfSk7XHJcbiAgcGFzc3dvcmRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcblxyXG4gIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2U7XHJcblxyXG4gIHBvc3RMb2dpblVybCA9ICcvJztcclxuXHJcbiAgaXNQZW5kaW5nID0gZmFsc2U7XHJcblxyXG4gIGxvZ2luRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgZW1haWw6IHRoaXMuZW1haWxDdHJsLFxyXG4gICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmRDdHJsLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgQEluamVjdChCREJfT1BUSU9OUykgYmRiT3B0aW9uczogQmRiT3B0aW9uc1xyXG4gICkge1xyXG4gICAgdGhpcy5mb3Jnb3RQYXNzd29yZFJvdXRlUGF0aCA9IGJkYk9wdGlvbnMuYXV0aE9wdGlvbnM/LmZvcmdvdFBhc3N3b3JkUGF0aDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiB4ID0+ICh0aGlzLnBvc3RMb2dpblVybCA9IHhbJ3JldHVyblVybCddID8/ICcvJyksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvZ2luKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2dpbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzUGVuZGluZyB8fCAhdGhpcy5sb2dpbkZvcm0udmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmxvZ2luRm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgdGhpcy5sb2dpbkZvcm0uZGlzYWJsZSgpO1xyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW4oZm9ybVZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1BlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxvZ2luRm9ybS5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wb3N0TG9naW5VcmxdKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSBlO1xyXG4gICAgICAgIHRoaXMuaXNQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2dpbkZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJsb2dpbkZvcm1cIiAobmdTdWJtaXQpPVwibG9naW4oKVwiPlxyXG4gIDxtYXQtY2FyZD5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5JbmxvZ2dlbjwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGJkYkZsZXg9XCJjb2xcIj5cclxuICAgICAgPGJkYi1hbGVydC1lcnJvci1yZXNwb25zZSBbdmFsdWVdPVwiZXJyb3JcIiBjbGFzcz1cImxvZ2luLWZvcm0tZXJyb3ItcmVzcG9uc2VcIj48L2JkYi1hbGVydC1lcnJvci1yZXNwb25zZT5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+R2VicnVpa2Vyc25hYW08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cImVtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiAvPlxyXG4gICAgICAgIDxtYXQtZXJyb3IgYmRiRm9ybUVycm9yPVwiZW1haWxcIj48L21hdC1lcnJvcj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+V2FjaHR3b29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIC8+XHJcbiAgICAgICAgPG1hdC1lcnJvciBiZGJGb3JtRXJyb3I9XCJwYXNzd29yZFwiPjwvbWF0LWVycm9yPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLWFjdGlvbnMgYmRiRmxleD1cInJvdyA4cHggZW5kIGNlbnRlclwiPlxyXG4gICAgICA8YSBtYXQtYnV0dG9uIFtyb3V0ZXJMaW5rXT1cIlsnLycsIGZvcmdvdFBhc3N3b3JkUm91dGVQYXRoXVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jb250YWN0X3N1cHBvcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuPldhY2h0d29vcmQgdmVyZ2V0ZW48L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmxvZ2luPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3Bhbj5JbmxvZ2dlbjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9mb3JtPlxyXG4iXX0=
@@ -1,33 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MatButtonModule } from '@angular/material/button';
3
- import { MatCardModule } from '@angular/material/card';
4
- import { MatIconModule } from '@angular/material/icon';
5
- import { RouterLink } from '@angular/router';
6
- import { BDB_OPTIONS } from '../../bdb-options';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "../../domain/auth/auth.service";
10
- import * as i3 from "@angular/material/card";
11
- import * as i4 from "@angular/material/button";
12
- import * as i5 from "@angular/material/icon";
13
- export class LogoutPageComponent {
14
- constructor(router, authService, bdbOptions) {
15
- this.router = router;
16
- this.authService = authService;
17
- this.bdbOptions = bdbOptions;
18
- }
19
- logout() {
20
- this.authService.logout();
21
- this.router.navigate(['/', this.bdbOptions.authOptions?.loginPath]);
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogoutPageComponent, deps: [{ token: i1.Router }, { token: i2.AuthService }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: LogoutPageComponent, isStandalone: true, selector: "bdb-logout-page", ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button color=\"primary\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log uit</span>\r\n </button></mat-card-actions\r\n >\r\n</mat-card>\r\n", styles: [":host{width:360px}.logout-page-card-content{display:flex;flex-direction:column;padding:16px}.logout-page-card-actions{gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogoutPageComponent, decorators: [{
27
- type: Component,
28
- args: [{ selector: 'bdb-logout-page', standalone: true, imports: [MatCardModule, MatButtonModule, MatIconModule, RouterLink], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button color=\"primary\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log uit</span>\r\n </button></mat-card-actions\r\n >\r\n</mat-card>\r\n", styles: [":host{width:360px}.logout-page-card-content{display:flex;flex-direction:column;padding:16px}.logout-page-card-actions{gap:8px;justify-content:flex-end}\n"] }]
29
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.AuthService }, { type: undefined, decorators: [{
30
- type: Inject,
31
- args: [BDB_OPTIONS]
32
- }] }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9wcmVzZW50YXRpb24vbG9nb3V0LXBhZ2UvbG9nb3V0LXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9wcmVzZW50YXRpb24vbG9nb3V0LXBhZ2UvbG9nb3V0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVM1RCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1UsTUFBYyxFQUNkLFdBQXdCLEVBQ0gsVUFBc0I7UUFGM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ0gsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUNsRCxDQUFDO0lBRUosTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQVZVLG1CQUFtQixtRUFJcEIsV0FBVztrR0FKVixtQkFBbUIsMkVDZmhDLGttQkFnQkEsa05ETFksYUFBYSxpaEJBQUUsZUFBZSx3WUFBRSxhQUFhLG9MQUFFLFVBQVU7OzJGQUl4RCxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDOzswQkFRakUsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG9tYWluL2F1dGgvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQkRCX09QVElPTlMsIEJkYk9wdGlvbnMgfSBmcm9tICcuLi8uLi9iZGItb3B0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JkYi1sb2dvdXQtcGFnZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTWF0Q2FyZE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBSb3V0ZXJMaW5rXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9nb3V0LXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvZ291dC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dvdXRQYWdlQ29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIEBJbmplY3QoQkRCX09QVElPTlMpIHByaXZhdGUgYmRiT3B0aW9uczogQmRiT3B0aW9uc1xyXG4gICkge31cclxuXHJcbiAgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsIHRoaXMuYmRiT3B0aW9ucy5hdXRoT3B0aW9ucz8ubG9naW5QYXRoXSk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtY2FyZD5cclxuICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPG1hdC1jYXJkLXRpdGxlPlVpdGxvZ2dlbjwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJsb2dvdXQtcGFnZS1jYXJkLWNvbnRlbnRcIj4gV2VldCB1IHpla2VyIGRhdCB1IHdpbHQgdWl0bG9nZ2VuPyA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJsb2dvdXQtcGFnZS1jYXJkLWFjdGlvbnNcIj5cclxuICAgIDxhIG1hdC1idXR0b24gcm91dGVyTGluaz1cIi9cIj5cclxuICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICA8c3Bhbj5CbGlqZiBpbmdlbG9nZDwvc3Bhbj5cclxuICAgIDwvYT5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImxvZ291dCgpXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4+TG9nIHVpdDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPjwvbWF0LWNhcmQtYWN0aW9uc1xyXG4gID5cclxuPC9tYXQtY2FyZD5cclxuIl19
@@ -1,102 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms';
3
- import { MatCardModule } from '@angular/material/card';
4
- import { MatFormFieldModule } from '@angular/material/form-field';
5
- import { MatInputModule } from '@angular/material/input';
6
- import { MatIconModule } from '@angular/material/icon';
7
- import { RouterLink } from '@angular/router';
8
- import { MatButtonModule } from '@angular/material/button';
9
- import { BDB_OPTIONS } from '../../bdb-options';
10
- import { BdbAlertErrorResponseComponent } from '../../common/alert-error-response/bdb-alert-error-response.component';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../../domain/auth/auth.service";
13
- import * as i2 from "@angular/router";
14
- import * as i3 from "@angular/forms";
15
- import * as i4 from "@angular/material/card";
16
- import * as i5 from "@angular/material/form-field";
17
- import * as i6 from "@angular/material/input";
18
- import * as i7 from "@angular/material/icon";
19
- import * as i8 from "@angular/material/button";
20
- export function equalValueValidator(otherControl) {
21
- return (thisControl) => {
22
- const otherValue = otherControl.value;
23
- const thisValue = thisControl.value;
24
- return otherValue === thisValue ? null : { custom: 'Komt niet overeen' };
25
- };
26
- }
27
- export class ResetPasswordPageComponent {
28
- constructor(authService, activatedRoute, router, bdbOptions) {
29
- this.authService = authService;
30
- this.activatedRoute = activatedRoute;
31
- this.router = router;
32
- this.isPending = false;
33
- this.passwordCtrl = new FormControl('', {
34
- validators: [
35
- Validators.required,
36
- Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*()])[A-Za-z0-9!@#$%^&*()]{6,}$'),
37
- ],
38
- nonNullable: true,
39
- });
40
- this.confirmPasswordCtrl = new FormControl('', {
41
- validators: [Validators.required, equalValueValidator(this.passwordCtrl)],
42
- nonNullable: true,
43
- });
44
- this.resetPasswordForm = new FormGroup({
45
- email: new FormControl('', { validators: [Validators.required, Validators.email], nonNullable: true }),
46
- token: new FormControl('', { validators: [Validators.required], nonNullable: true }),
47
- password: this.passwordCtrl,
48
- confirmPassword: this.confirmPasswordCtrl,
49
- });
50
- this.loginRoutePath = bdbOptions.authOptions?.loginPath;
51
- }
52
- ngOnInit() {
53
- this.activatedRoute.data.subscribe({
54
- next: x => {
55
- this.resetPasswordToken = x['resetPasswordToken'];
56
- if (this.resetPasswordToken) {
57
- this.resetPasswordForm.patchValue(this.resetPasswordToken);
58
- }
59
- },
60
- });
61
- }
62
- resetPassword() {
63
- if (this.isPending || !this.resetPasswordForm.valid) {
64
- return;
65
- }
66
- this.isPending = true;
67
- this.error = undefined;
68
- const formValue = this.resetPasswordForm.getRawValue();
69
- this.resetPasswordForm.disable();
70
- this.authService.resetPassword(formValue).subscribe({
71
- next: () => {
72
- this.isPending = false;
73
- this.resetPasswordForm.enable();
74
- this.router.navigate(['/']);
75
- },
76
- error: e => {
77
- this.error = e;
78
- this.isPending = false;
79
- this.resetPasswordForm.enable();
80
- },
81
- });
82
- }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ResetPasswordPageComponent, deps: [{ token: i1.AuthService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ResetPasswordPageComponent, isStandalone: true, selector: "bdb-reset-password-page", ngImport: i0, template: "<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n <!-- <mat-error *ngIf=\"passwordCtrl.errors\">{{ passwordCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n <!-- <mat-error *ngIf=\"confirmPasswordCtrl.errors\">{{ confirmPasswordCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>sync_lock</mat-icon>\r\n <span>Stel wachtwoord in</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.reset-password-page-card-content{display:flex;flex-direction:column;margin-top:16px}.reset-password-page-card-actions{gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ResetPasswordPageComponent, decorators: [{
87
- type: Component,
88
- args: [{ selector: 'bdb-reset-password-page', standalone: true, imports: [
89
- ReactiveFormsModule,
90
- MatCardModule,
91
- BdbAlertErrorResponseComponent,
92
- MatFormFieldModule,
93
- MatInputModule,
94
- MatIconModule,
95
- RouterLink,
96
- MatButtonModule,
97
- ], template: "<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n <!-- <mat-error *ngIf=\"passwordCtrl.errors\">{{ passwordCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n <!-- <mat-error *ngIf=\"confirmPasswordCtrl.errors\">{{ confirmPasswordCtrl | bdbErrorMessage }}</mat-error> -->\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button color=\"primary\">\r\n <mat-icon>sync_lock</mat-icon>\r\n <span>Stel wachtwoord in</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.reset-password-page-card-content{display:flex;flex-direction:column;margin-top:16px}.reset-password-page-card-actions{gap:8px;justify-content:flex-end}\n"] }]
98
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: undefined, decorators: [{
99
- type: Inject,
100
- args: [BDB_OPTIONS]
101
- }] }] });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL3ByZXNlbnRhdGlvbi9yZXNldC1wYXNzd29yZC1wYWdlL3Jlc2V0LXBhc3N3b3JkLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9wcmVzZW50YXRpb24vcmVzZXQtcGFzc3dvcmQtcGFnZS9yZXNldC1wYXNzd29yZC1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNULG1CQUFtQixFQUduQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsV0FBVyxFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0VBQXNFLENBQUM7Ozs7Ozs7Ozs7QUFFdEgsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFlBQTZCO0lBQy9ELE9BQU8sQ0FBQyxXQUE0QixFQUEyQixFQUFFO1FBQy9ELE1BQU0sVUFBVSxH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QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdEVVLDBCQUEwQixpR0FnQzNCLFdBQVc7a0dBaENWLDBCQUEwQixtRkM5Q3ZDLGtnREFpQ0EscU9EQ0ksbUJBQW1CLCs5QkFDbkIsYUFBYSxraEJBQ2IsOEJBQThCLHVGQUM5QixrQkFBa0IsMFNBQ2xCLGNBQWMsMFdBQ2QsYUFBYSxvTEFDYixVQUFVLG1PQUNWLGVBQWU7OzJGQUtOLDBCQUEwQjtrQkFoQnRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsOEJBQThCO3dCQUM5QixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixVQUFVO3dCQUNWLGVBQWU7cUJBQ2hCOzswQkFvQ0UsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlc2V0UGFzc3dvcmRUb2tlbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9hdXRoL3Jlc2V0LXBhc3N3b3JkLXRva2VuJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9kb21haW4vYXV0aC9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCREJfT1BUSU9OUywgQmRiT3B0aW9ucyB9IGZyb20gJy4uLy4uL2JkYi1vcHRpb25zJztcclxuaW1wb3J0IHsgQmRiQWxlcnRFcnJvclJlc3BvbnNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2FsZXJ0LWVycm9yLXJlc3BvbnNlL2JkYi1hbGVydC1lcnJvci1yZXNwb25zZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsVmFsdWVWYWxpZGF0b3Iob3RoZXJDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuICh0aGlzQ29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3Qgb3RoZXJWYWx1ZSA9IG90aGVyQ29udHJvbC52YWx1ZTtcclxuICAgIGNvbnN0IHRoaXNWYWx1ZSA9IHRoaXNDb250cm9sLnZhbHVlO1xyXG4gICAgcmV0dXJuIG90aGVyVmFsdWUgPT09IHRoaXNWYWx1ZSA/IG51bGwgOiB7IGN1c3RvbTogJ0tvbXQgbmlldCBvdmVyZWVuJyB9O1xyXG4gIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYmRiLXJlc2V0LXBhc3N3b3JkLXBhZ2UnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdENhcmRNb2R1bGUsXHJcbiAgICBCZGJBbGVydEVycm9yUmVzcG9uc2VDb21wb25lbnQsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJMaW5rLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc2V0LXBhc3N3b3JkLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc2V0LXBhc3N3b3JkLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc2V0UGFzc3dvcmRQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsb2dpblJvdXRlUGF0aD86IHN0cmluZztcclxuXHJcbiAgaXNQZW5kaW5nID0gZmFsc2U7XHJcblxyXG4gIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2U7XHJcblxyXG4gIHBhc3N3b3JkQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJywge1xyXG4gICAgdmFsaWRhdG9yczogW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipbMC05XSkoPz0uKlshQCMkJV4mKigpXSlbQS1aYS16MC05IUAjJCVeJiooKV17Nix9JCcpLFxyXG4gICAgXSxcclxuICAgIG5vbk51bGxhYmxlOiB0cnVlLFxyXG4gIH0pO1xyXG4gIGNvbmZpcm1QYXNzd29yZEN0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycsIHtcclxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBlcXVhbFZhbHVlVmFsaWRhdG9yKHRoaXMucGFzc3dvcmRDdHJsKV0sXHJcbiAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICB9KTtcclxuXHJcbiAgcmVzZXRQYXNzd29yZEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdLCBub25OdWxsYWJsZTogdHJ1ZSB9KSxcclxuICAgIHRva2VuOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBub25OdWxsYWJsZTogdHJ1ZSB9KSxcclxuICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkQ3RybCxcclxuICAgIGNvbmZpcm1QYXNzd29yZDogdGhpcy5jb25maXJtUGFzc3dvcmRDdHJsLFxyXG4gIH0pO1xyXG5cclxuICByZXNldFBhc3N3b3JkVG9rZW4/OiBSZXNldFBhc3N3b3JkVG9rZW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBASW5qZWN0KEJEQl9PUFRJT05TKSBiZGJPcHRpb25zOiBCZGJPcHRpb25zXHJcbiAgKSB7XHJcbiAgICB0aGlzLmxvZ2luUm91dGVQYXRoID0gYmRiT3B0aW9ucy5hdXRoT3B0aW9ucz8ubG9naW5QYXRoO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogeCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldFBhc3N3b3JkVG9rZW4gPSB4WydyZXNldFBhc3N3b3JkVG9rZW4nXTtcclxuICAgICAgICBpZiAodGhpcy5yZXNldFBhc3N3b3JkVG9rZW4pIHtcclxuICAgICAgICAgIHRoaXMucmVzZXRQYXNzd29yZEZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnJlc2V0UGFzc3dvcmRUb2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldFBhc3N3b3JkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQZW5kaW5nIHx8ICF0aGlzLnJlc2V0UGFzc3dvcmRGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5yZXNldFBhc3N3b3JkRm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgdGhpcy5yZXNldFBhc3N3b3JkRm9ybS5kaXNhYmxlKCk7XHJcblxyXG4gICAgdGhpcy5hdXRoU2VydmljZS5yZXNldFBhc3N3b3JkKGZvcm1WYWx1ZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQZW5kaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXNldFBhc3N3b3JkRm9ybS5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlID0+IHtcclxuICAgICAgICB0aGlzLmVycm9yID0gZTtcclxuICAgICAgICB0aGlzLmlzUGVuZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVzZXRQYXNzd29yZEZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJyZXNldFBhc3N3b3JkRm9ybVwiIChuZ1N1Ym1pdCk9XCJyZXNldFBhc3N3b3JkKClcIj5cclxuICA8bWF0LWNhcmQ+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+V2FjaHR3b29yZCBoZXJzdGVsbGVuPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJyZXNldC1wYXNzd29yZC1wYWdlLWNhcmQtY29udGVudFwiPlxyXG4gICAgICA8YmRiLWFsZXJ0LWVycm9yLXJlc3BvbnNlIFt2YWx1ZV09XCJlcnJvclwiIGNsYXNzPVwibG9naW4tcGFnZS1lcnJvci1yZXNwb25zZVwiPjwvYmRiLWFsZXJ0LWVycm9yLXJlc3BvbnNlPlxyXG4gICAgICA8cD57eyByZXNldFBhc3N3b3JkVG9rZW4/LmVtYWlsIH19PC9wPlxyXG5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+TmlldXcgd2FjaHR3b29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBbZm9ybUNvbnRyb2xdPVwicGFzc3dvcmRDdHJsXCIgLz5cclxuICAgICAgICA8IS0tIDxtYXQtZXJyb3IgKm5nSWY9XCJwYXNzd29yZEN0cmwuZXJyb3JzXCI+e3sgcGFzc3dvcmRDdHJsIHwgYmRiRXJyb3JNZXNzYWdlIH19PC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+QmV2ZXN0aWcgd2FjaHR3b29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBbZm9ybUNvbnRyb2xdPVwiY29uZmlybVBhc3N3b3JkQ3RybFwiIC8+XHJcbiAgICAgICAgPCEtLSA8bWF0LWVycm9yICpuZ0lmPVwiY29uZmlybVBhc3N3b3JkQ3RybC5lcnJvcnNcIj57eyBjb25maXJtUGFzc3dvcmRDdHJsIHwgYmRiRXJyb3JNZXNzYWdlIH19PC9tYXQtZXJyb3I+IC0tPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJyZXNldC1wYXNzd29yZC1wYWdlLWNhcmQtYWN0aW9uc1wiPlxyXG4gICAgICA8YSBtYXQtYnV0dG9uIFtyb3V0ZXJMaW5rXT1cIlsnLycsIGxvZ2luUm91dGVQYXRoXVwiIFtkaXNhYmxlZF09XCJpc1BlbmRpbmdcIj5cclxuICAgICAgICA8bWF0LWljb24+bG9naW48L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuPkxvZyBpbjwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICA8bWF0LWljb24+c3luY19sb2NrPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3Bhbj5TdGVsIHdhY2h0d29vcmQgaW48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPjwvbWF0LWNhcmQtYWN0aW9uc1xyXG4gICAgPlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvZm9ybT5cclxuIl19
@@ -1,25 +0,0 @@
1
- import { Router } from '@angular/router';
2
- import { BDB_OPTIONS } from '../bdb-options';
3
- import { inject } from '@angular/core';
4
- import { catchError, concatMap, map, of, tap } from 'rxjs';
5
- import { AuthService } from '../domain/auth/auth.service';
6
- export const resetPasswordResolver = route => {
7
- const authService = inject(AuthService);
8
- const router = inject(Router);
9
- const bdbOptions = inject(BDB_OPTIONS);
10
- const invalidTokenPath = bdbOptions.authOptions?.invalidTokenPath;
11
- const model = {
12
- token: route.queryParams['token'],
13
- email: route.queryParams['email'],
14
- };
15
- return of(model).pipe(tap(x => {
16
- if (!x.token || !x.email) {
17
- throw new Error('Could not obtain token');
18
- }
19
- }), concatMap(x => authService.validateResetPasswordToken(x)), tap(x => {
20
- if (!x) {
21
- throw new Error('Token is not valid');
22
- }
23
- }), catchError(() => router.navigate(['/', invalidTokenPath])), map(() => model));
24
- };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL3ByZXNlbnRhdGlvbi9yZXNldC1wYXNzd29yZC5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFrQyxLQUFLLENBQUMsRUFBRTtJQUMxRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7SUFFbEUsTUFBTSxLQUFLLEdBQXVCO1FBQ2hDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7S0FDbEMsQ0FBQztJQUVGLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDekQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFDMUQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNqQixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb2x2ZUZuLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCREJfT1BUSU9OUyB9IGZyb20gJy4uL2JkYi1vcHRpb25zJztcclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlc2V0UGFzc3dvcmRUb2tlbiB9IGZyb20gJy4uL2RvbWFpbi9hdXRoL3Jlc2V0LXBhc3N3b3JkLXRva2VuJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwLCBtYXAsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9kb21haW4vYXV0aC9hdXRoLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHJlc2V0UGFzc3dvcmRSZXNvbHZlcjogUmVzb2x2ZUZuPFJlc2V0UGFzc3dvcmRUb2tlbj4gPSByb3V0ZSA9PiB7XHJcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xyXG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIGNvbnN0IGJkYk9wdGlvbnMgPSBpbmplY3QoQkRCX09QVElPTlMpO1xyXG4gIGNvbnN0IGludmFsaWRUb2tlblBhdGggPSBiZGJPcHRpb25zLmF1dGhPcHRpb25zPy5pbnZhbGlkVG9rZW5QYXRoO1xyXG5cclxuICBjb25zdCBtb2RlbDogUmVzZXRQYXNzd29yZFRva2VuID0ge1xyXG4gICAgdG9rZW46IHJvdXRlLnF1ZXJ5UGFyYW1zWyd0b2tlbiddLFxyXG4gICAgZW1haWw6IHJvdXRlLnF1ZXJ5UGFyYW1zWydlbWFpbCddLFxyXG4gIH07XHJcblxyXG4gIHJldHVybiBvZihtb2RlbCkucGlwZShcclxuICAgIHRhcCh4ID0+IHtcclxuICAgICAgaWYgKCF4LnRva2VuIHx8ICF4LmVtYWlsKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3Qgb2J0YWluIHRva2VuJyk7XHJcbiAgICAgIH1cclxuICAgIH0pLFxyXG4gICAgY29uY2F0TWFwKHggPT4gYXV0aFNlcnZpY2UudmFsaWRhdGVSZXNldFBhc3N3b3JkVG9rZW4oeCkpLFxyXG4gICAgdGFwKHggPT4ge1xyXG4gICAgICBpZiAoIXgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCcpO1xyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgIGNhdGNoRXJyb3IoKCkgPT4gcm91dGVyLm5hdmlnYXRlKFsnLycsIGludmFsaWRUb2tlblBhdGhdKSksXHJcbiAgICBtYXAoKCkgPT4gbW9kZWwpXHJcbiAgKTtcclxufTtcclxuIl19
@@ -1,28 +0,0 @@
1
- import { Router } from '@angular/router';
2
- import { inject } from '@angular/core';
3
- import { BDB_OPTIONS } from '../bdb-options';
4
- import { AuthService } from '../domain/auth/auth.service';
5
- export function roleGuard(...roles) {
6
- return (_, state) => {
7
- const authService = inject(AuthService);
8
- const router = inject(Router);
9
- const bdbOptions = inject(BDB_OPTIONS);
10
- const account = authService.account$.getValue();
11
- if (!account) {
12
- return router.createUrlTree([`/${bdbOptions.authOptions?.loginPath}`], {
13
- queryParams: { returnUrl: state.url },
14
- });
15
- }
16
- if (!roles.length) {
17
- return true;
18
- }
19
- const userRoles = account.roles;
20
- if (userRoles.some(x => roles.includes(x))) {
21
- return true;
22
- }
23
- return router.createUrlTree([`/${bdbOptions.authOptions?.accessDeniedPath}`], {
24
- queryParams: { returnUrl: state.url },
25
- });
26
- };
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvcHJlc2VudGF0aW9uL3JvbGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFHLEtBQWU7SUFDMUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO2dCQUNyRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTthQUN0QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRWhDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUU7WUFDNUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUU7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCREJfT1BUSU9OUyB9IGZyb20gJy4uL2JkYi1vcHRpb25zJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9kb21haW4vYXV0aC9hdXRoLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJvbGVHdWFyZCguLi5yb2xlczogc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcclxuICByZXR1cm4gKF8sIHN0YXRlKSA9PiB7XHJcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgIGNvbnN0IGJkYk9wdGlvbnMgPSBpbmplY3QoQkRCX09QVElPTlMpO1xyXG4gICAgY29uc3QgYWNjb3VudCA9IGF1dGhTZXJ2aWNlLmFjY291bnQkLmdldFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKCFhY2NvdW50KSB7XHJcbiAgICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbYC8ke2JkYk9wdGlvbnMuYXV0aE9wdGlvbnM/LmxvZ2luUGF0aH1gXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogc3RhdGUudXJsIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcm9sZXMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVzZXJSb2xlcyA9IGFjY291bnQucm9sZXM7XHJcblxyXG4gICAgaWYgKHVzZXJSb2xlcy5zb21lKHggPT4gcm9sZXMuaW5jbHVkZXMoeCkpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbYC8ke2JkYk9wdGlvbnMuYXV0aE9wdGlvbnM/LmFjY2Vzc0RlbmllZFBhdGh9YF0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiBzdGF0ZS51cmwgfSxcclxuICAgIH0pO1xyXG4gIH07XHJcbn1cclxuIl19
@@ -1,112 +0,0 @@
1
- export * from './lib/lib.config';
2
- export * from './lib/bdb-options';
3
- // Application
4
- export * from './lib/application/common/bdb-data-source';
5
- export * from './lib/application/common/paginator/bdb-paginator.component';
6
- export * from './lib/application/common/query-input/bdb-query-input.component';
7
- export * from './lib/application/common/search/bdb-search-wrapper.component';
8
- export * from './lib/application/common/search/bdb-search.component';
9
- export * from './lib/application/common/table/bdb-cell.directive';
10
- export * from './lib/application/common/table/bdb-column';
11
- export * from './lib/application/common/table/bdb-column-builder';
12
- export * from './lib/application/common/table/bdb-column-options';
13
- export * from './lib/application/common/table/bdb-column-type';
14
- export * from './lib/application/common/table/bdb-context-action';
15
- export * from './lib/application/common/table/bdb-table.component';
16
- export * from './lib/application/common/full-table/bdb-full-table.component';
17
- export * from './lib/application/exception-log/exception-log-table/exception-log-table.component';
18
- export * from './lib/application/task-log/task-log-status.pipe';
19
- export * from './lib/application/task-log/task-log-outcome.pipe';
20
- export * from './lib/application/task-log-parameter/task-log-parameter-value.pipe';
21
- export * from './lib/application/user/user-table/user-table.component';
22
- // Common
23
- export * from './lib/common/bdb-flex.directive';
24
- export * from './lib/common/bdb-flex-child.directive';
25
- export * from './lib/common/bdb-grid.directive';
26
- export * from './lib/common/bdb-grid-child.directive';
27
- export * from './lib/common/bdb-form-error.directive';
28
- export * from './lib/common/bdb-palette';
29
- export * from './lib/common/alert/bdb-alert.component';
30
- export * from './lib/common/alert-error-response/bdb-alert-error-response.component';
31
- export * from './lib/common/boolean-display/bdb-boolean-display.component';
32
- export * from './lib/common/collapse-row/collapse-row.component';
33
- export * from './lib/common/field/bdb-field.component';
34
- export * from './lib/common/plain-number-pipe';
35
- // Domain
36
- // Domain - Auth
37
- export * from './lib/domain/auth/auth.service';
38
- export * from './lib/domain/auth/account-info';
39
- export * from './lib/domain/auth/reset-password-token';
40
- export * from './lib/domain/auth/token-expired.interceptor';
41
- export * from './lib/domain/auth/token-reponse';
42
- export * from './lib/domain/auth/token.interceptor';
43
- // Domain - Common
44
- export * from './lib/domain/common/bdb-filter';
45
- export * from './lib/domain/common/bdb-request';
46
- export * from './lib/domain/common/bdb-response';
47
- export * from './lib/domain/common/entities/bdb-entity';
48
- export * from './lib/domain/common/entities/bdb-entity-read';
49
- export * from './lib/domain/common/entities/bdb-entity-update';
50
- export * from './lib/domain/common/services/bdb-service';
51
- export * from './lib/domain/common/services/bdb-service-r';
52
- export * from './lib/domain/common/services/bdb-service-cr';
53
- export * from './lib/domain/common/services/bdb-service-rd';
54
- export * from './lib/domain/common/services/bdb-service-ru';
55
- export * from './lib/domain/common/services/bdb-service-crd';
56
- export * from './lib/domain/common/services/bdb-service-cru';
57
- export * from './lib/domain/common/services/bdb-service-rud';
58
- export * from './lib/domain/common/services/bdb-service-crud';
59
- // Domain - Entities
60
- export * from './lib/domain/entities/exception-log/exception-log';
61
- export * from './lib/domain/entities/exception-log/exception-log-read';
62
- export * from './lib/domain/entities/exception-log/exception-log.service';
63
- export * from './lib/domain/entities/media/media';
64
- export * from './lib/domain/entities/media/media-read';
65
- export * from './lib/domain/entities/media/media.service';
66
- export * from './lib/domain/entities/role/role';
67
- export * from './lib/domain/entities/role/role-read';
68
- export * from './lib/domain/entities/role/role.service';
69
- export * from './lib/domain/entities/task-log/task-log-create';
70
- export * from './lib/domain/entities/task-log/task-log';
71
- export * from './lib/domain/entities/task-log/task-log-read';
72
- export * from './lib/domain/entities/task-log/task-log.service';
73
- export * from './lib/domain/entities/task-log-parameter/task-log-parameter-create';
74
- export * from './lib/domain/entities/task-log-parameter/task-log-parameter';
75
- export * from './lib/domain/entities/task-log-parameter/task-log-parameter-read';
76
- export * from './lib/domain/entities/task-log-parameter/task-log-parameter.service';
77
- export * from './lib/domain/entities/task-log-schedule/task-log-schedule-create';
78
- export * from './lib/domain/entities/task-log-schedule/task-log-schedule-update';
79
- export * from './lib/domain/entities/task-log-schedule/task-log-schedule';
80
- export * from './lib/domain/entities/task-log-schedule/task-log-schedule-read';
81
- export * from './lib/domain/entities/task-log-schedule/task-log-schedule.service';
82
- export * from './lib/domain/entities/user/user-create';
83
- export * from './lib/domain/entities/user/user-update';
84
- export * from './lib/domain/entities/user/user';
85
- export * from './lib/domain/entities/user/user-read';
86
- export * from './lib/domain/entities/user/user.service';
87
- export * from './lib/domain/entities/user-role/user-role-create';
88
- export * from './lib/domain/entities/user-role/user-role';
89
- export * from './lib/domain/entities/user-role/user-role-read';
90
- export * from './lib/domain/entities/user-role/user-role.service';
91
- // Domain - Enums
92
- export * from './lib/domain/enums/media-type';
93
- export * from './lib/domain/enums/task-log-outcome';
94
- export * from './lib/domain/enums/task-log-parameter-type';
95
- export * from './lib/domain/enums/task-log-status';
96
- // Domain - Tasks
97
- export * from './lib/domain/tasks/task-log-scheduler.service';
98
- export * from './lib/domain/tasks/task-log-type';
99
- export * from './lib/domain/tasks/task-log-type-parameter';
100
- export * from './lib/domain/tasks/task-log-type.service';
101
- // Presentation
102
- export * from './lib/presentation/logged-out.guard';
103
- export * from './lib/presentation/reset-password.resolver';
104
- export * from './lib/presentation/role.guard';
105
- export * from './lib/presentation/access-denied-page/access-denied-page.component';
106
- export * from './lib/presentation/auth-container/auth-container.component';
107
- export * from './lib/presentation/forgot-password-page/forgot-password-page.component';
108
- export * from './lib/presentation/invalid-token-page/invalid-token-page.component';
109
- export * from './lib/presentation/login-page/login-page.component';
110
- export * from './lib/presentation/logout-page/logout-page.component';
111
- export * from './lib/presentation/reset-password-page/reset-password-page.component';
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxjQUFjO0FBRWQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw4REFBOEQsQ0FBQztBQUU3RSxjQUFjLG1GQUFtRixDQUFDO0FBRWxHLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSxjQUFjLG9FQUFvRSxDQUFDO0FBRW5GLGNBQWMsd0RBQXdELENBQUM7QUFFdkUsU0FBUztBQUVULGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdDQUFnQyxDQUFDO0FBRS9DLFNBQVM7QUFFVCxnQkFBZ0I7QUFFaEIsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMscUNBQXFDLENBQUM7QUFFcEQsa0JBQWtCO0FBRWxCLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGdEQUFnRCxDQUFDO0FBRS9ELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLCtDQUErQyxDQUFDO0FBRTlELG9CQUFvQjtBQUVwQixjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywyREFBMkQsQ0FBQztBQUUxRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGlEQUFpRCxDQUFDO0FBRWhFLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMscUVBQXFFLENBQUM7QUFFcEYsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLG1FQUFtRSxDQUFDO0FBRWxGLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG1EQUFtRCxDQUFDO0FBRWxFLGlCQUFpQjtBQUVqQixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELGlCQUFpQjtBQUVqQixjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDBDQUEwQyxDQUFDO0FBRXpELGVBQWU7QUFFZixjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyx3RUFBd0UsQ0FBQztBQUN2RixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHNFQUFzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbGliLmNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JkYi1vcHRpb25zJztcclxuXHJcbi8vIEFwcGxpY2F0aW9uXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi9jb21tb24vYmRiLWRhdGEtc291cmNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24vY29tbW9uL3BhZ2luYXRvci9iZGItcGFnaW5hdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uL2NvbW1vbi9xdWVyeS1pbnB1dC9iZGItcXVlcnktaW5wdXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24vY29tbW9uL3NlYXJjaC9iZGItc2VhcmNoLXdyYXBwZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24vY29tbW9uL3NlYXJjaC9iZGItc2VhcmNoLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uL2NvbW1vbi90YWJsZS9iZGItY2VsbC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi9jb21tb24vdGFibGUvYmRiLWNvbHVtbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uL2NvbW1vbi90YWJsZS9iZGItY29sdW1uLWJ1aWxkZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi9jb21tb24vdGFibGUvYmRiLWNvbHVtbi1vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24vY29tbW9uL3RhYmxlL2JkYi1jb2x1bW4tdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uL2NvbW1vbi90YWJsZS9iZGItY29udGV4dC1hY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi9jb21tb24vdGFibGUvYmRiLXRhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uL2NvbW1vbi9mdWxsLXRhYmxlL2JkYi1mdWxsLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi9leGNlcHRpb24tbG9nL2V4Y2VwdGlvbi1sb2ctdGFibGUvZXhjZXB0aW9uLWxvZy10YWJsZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24vdGFzay1sb2cvdGFzay1sb2ctc3RhdHVzLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi90YXNrLWxvZy90YXNrLWxvZy1vdXRjb21lLnBpcGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24vdGFzay1sb2ctcGFyYW1ldGVyL3Rhc2stbG9nLXBhcmFtZXRlci12YWx1ZS5waXBlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uL3VzZXIvdXNlci10YWJsZS91c2VyLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG4vLyBDb21tb25cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi9iZGItZmxleC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24vYmRiLWZsZXgtY2hpbGQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uL2JkYi1ncmlkLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi9iZGItZ3JpZC1jaGlsZC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24vYmRiLWZvcm0tZXJyb3IuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi9iZGItcGFsZXR0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbW1vbi9hbGVydC9iZGItYWxlcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uL2FsZXJ0LWVycm9yLXJlc3BvbnNlL2JkYi1hbGVydC1lcnJvci1yZXNwb25zZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24vYm9vbGVhbi1kaXNwbGF5L2JkYi1ib29sZWFuLWRpc3BsYXkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uL2NvbGxhcHNlLXJvdy9jb2xsYXBzZS1yb3cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uL2ZpZWxkL2JkYi1maWVsZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21tb24vcGxhaW4tbnVtYmVyLXBpcGUnO1xyXG5cclxuLy8gRG9tYWluXHJcblxyXG4vLyBEb21haW4gLSBBdXRoXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vYXV0aC9hdXRoLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vYXV0aC9hY2NvdW50LWluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vYXV0aC9yZXNldC1wYXNzd29yZC10b2tlbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9hdXRoL3Rva2VuLWV4cGlyZWQuaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vYXV0aC90b2tlbi1yZXBvbnNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2F1dGgvdG9rZW4uaW50ZXJjZXB0b3InO1xyXG5cclxuLy8gRG9tYWluIC0gQ29tbW9uXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL2JkYi1maWx0ZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL2JkYi1yZXF1ZXN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2NvbW1vbi9iZGItcmVzcG9uc2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2NvbW1vbi9lbnRpdGllcy9iZGItZW50aXR5JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2NvbW1vbi9lbnRpdGllcy9iZGItZW50aXR5LXJlYWQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL2VudGl0aWVzL2JkYi1lbnRpdHktdXBkYXRlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9jb21tb24vc2VydmljZXMvYmRiLXNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL3NlcnZpY2VzL2JkYi1zZXJ2aWNlLXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL3NlcnZpY2VzL2JkYi1zZXJ2aWNlLWNyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2NvbW1vbi9zZXJ2aWNlcy9iZGItc2VydmljZS1yZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9jb21tb24vc2VydmljZXMvYmRiLXNlcnZpY2UtcnUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL3NlcnZpY2VzL2JkYi1zZXJ2aWNlLWNyZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9jb21tb24vc2VydmljZXMvYmRiLXNlcnZpY2UtY3J1JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2NvbW1vbi9zZXJ2aWNlcy9iZGItc2VydmljZS1ydWQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vY29tbW9uL3NlcnZpY2VzL2JkYi1zZXJ2aWNlLWNydWQnO1xyXG5cclxuLy8gRG9tYWluIC0gRW50aXRpZXNcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy9leGNlcHRpb24tbG9nL2V4Y2VwdGlvbi1sb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvZXhjZXB0aW9uLWxvZy9leGNlcHRpb24tbG9nLXJlYWQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvZXhjZXB0aW9uLWxvZy9leGNlcHRpb24tbG9nLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL21lZGlhL21lZGlhJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL21lZGlhL21lZGlhLXJlYWQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvbWVkaWEvbWVkaWEuc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvcm9sZS9yb2xlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3JvbGUvcm9sZS1yZWFkJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3JvbGUvcm9sZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy90YXNrLWxvZy1jcmVhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvdGFzay1sb2cvdGFzay1sb2cnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvdGFzay1sb2cvdGFzay1sb2ctcmVhZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy90YXNrLWxvZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy1wYXJhbWV0ZXIvdGFzay1sb2ctcGFyYW1ldGVyLWNyZWF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy1wYXJhbWV0ZXIvdGFzay1sb2ctcGFyYW1ldGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3Rhc2stbG9nLXBhcmFtZXRlci90YXNrLWxvZy1wYXJhbWV0ZXItcmVhZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy1wYXJhbWV0ZXIvdGFzay1sb2ctcGFyYW1ldGVyLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3Rhc2stbG9nLXNjaGVkdWxlL3Rhc2stbG9nLXNjaGVkdWxlLWNyZWF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy1zY2hlZHVsZS90YXNrLWxvZy1zY2hlZHVsZS11cGRhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvdGFzay1sb2ctc2NoZWR1bGUvdGFzay1sb2ctc2NoZWR1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvdGFzay1sb2ctc2NoZWR1bGUvdGFzay1sb2ctc2NoZWR1bGUtcmVhZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy90YXNrLWxvZy1zY2hlZHVsZS90YXNrLWxvZy1zY2hlZHVsZS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy91c2VyL3VzZXItY3JlYXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3VzZXIvdXNlci11cGRhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW50aXRpZXMvdXNlci91c2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3VzZXIvdXNlci1yZWFkJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3VzZXIvdXNlci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy91c2VyLXJvbGUvdXNlci1yb2xlLWNyZWF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy91c2VyLXJvbGUvdXNlci1yb2xlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudGl0aWVzL3VzZXItcm9sZS91c2VyLXJvbGUtcmVhZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnRpdGllcy91c2VyLXJvbGUvdXNlci1yb2xlLnNlcnZpY2UnO1xyXG5cclxuLy8gRG9tYWluIC0gRW51bXNcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi9lbnVtcy9tZWRpYS10eXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZG9tYWluL2VudW1zL3Rhc2stbG9nLW91dGNvbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW51bXMvdGFzay1sb2ctcGFyYW1ldGVyLXR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vZW51bXMvdGFzay1sb2ctc3RhdHVzJztcclxuXHJcbi8vIERvbWFpbiAtIFRhc2tzXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vdGFza3MvdGFzay1sb2ctc2NoZWR1bGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kb21haW4vdGFza3MvdGFzay1sb2ctdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi90YXNrcy90YXNrLWxvZy10eXBlLXBhcmFtZXRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RvbWFpbi90YXNrcy90YXNrLWxvZy10eXBlLnNlcnZpY2UnO1xyXG5cclxuLy8gUHJlc2VudGF0aW9uXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmVzZW50YXRpb24vbG9nZ2VkLW91dC5ndWFyZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByZXNlbnRhdGlvbi9yZXNldC1wYXNzd29yZC5yZXNvbHZlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByZXNlbnRhdGlvbi9yb2xlLmd1YXJkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByZXNlbnRhdGlvbi9hY2Nlc3MtZGVuaWVkLXBhZ2UvYWNjZXNzLWRlbmllZC1wYWdlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByZXNlbnRhdGlvbi9hdXRoLWNvbnRhaW5lci9hdXRoLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmVzZW50YXRpb24vZm9yZ290LXBhc3N3b3JkLXBhZ2UvZm9yZ290LXBhc3N3b3JkLXBhZ2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJlc2VudGF0aW9uL2ludmFsaWQtdG9rZW4tcGFnZS9pbnZhbGlkLXRva2VuLXBhZ2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJlc2VudGF0aW9uL2xvZ2luLXBhZ2UvbG9naW4tcGFnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmVzZW50YXRpb24vbG9nb3V0LXBhZ2UvbG9nb3V0LXBhZ2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJlc2VudGF0aW9uL3Jlc2V0LXBhc3N3b3JkLXBhZ2UvcmVzZXQtcGFzc3dvcmQtcGFnZS5jb21wb25lbnQnO1xyXG4iXX0=