ngx-techlify-core 18.57.0 → 18.58.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 (107) hide show
  1. package/esm2022/lib/access-control-config/access-control-config.service.mjs +3 -3
  2. package/esm2022/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.mjs +3 -3
  3. package/esm2022/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.mjs +3 -3
  4. package/esm2022/lib/app-admin/admin-role/admin-role.service.mjs +3 -3
  5. package/esm2022/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.mjs +3 -3
  6. package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +35 -94
  7. package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +3 -12
  8. package/esm2022/lib/audit-log/audit-log.service.mjs +3 -3
  9. package/esm2022/lib/base-model/index.mjs +4 -4
  10. package/esm2022/lib/base-model/techlify-form-component.mjs +128 -0
  11. package/esm2022/lib/base-model/techlify-list-component.mjs +289 -0
  12. package/esm2022/lib/base-model/techlify-service.mjs +68 -0
  13. package/esm2022/lib/company-information/client.service.mjs +3 -3
  14. package/esm2022/lib/company-information/company-information/company-information.component.mjs +3 -3
  15. package/esm2022/lib/delete-button/techlify-delete-button.component.mjs +1 -1
  16. package/esm2022/lib/entity-files/entity-file.service.mjs +3 -3
  17. package/esm2022/lib/form-configuration/form-configuration-form-field.service.mjs +3 -3
  18. package/esm2022/lib/form-configuration/form-configuration-form.service.mjs +3 -3
  19. package/esm2022/lib/login/login-form-fields/login-form-fields.component.mjs +3 -3
  20. package/esm2022/lib/note/note-list/note-list.component.mjs +3 -3
  21. package/esm2022/lib/pdf-button/pdf-button.component.mjs +11 -7
  22. package/esm2022/lib/reset-password/reset-password.component.mjs +3 -3
  23. package/esm2022/lib/reset-password/reset-password.service.mjs +3 -3
  24. package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +3 -3
  25. package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +3 -3
  26. package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +3 -3
  27. package/esm2022/lib/restrictors/restrictor.service.mjs +3 -3
  28. package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +7 -7
  29. package/esm2022/lib/subscription/subscription-form/subscription-form.component.mjs +3 -3
  30. package/esm2022/lib/subscription/subscription-listing/subscription-listing.component.mjs +3 -3
  31. package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.component.mjs +3 -3
  32. package/esm2022/lib/subscription/subscription-package.service.mjs +3 -3
  33. package/esm2022/lib/subscription/subscription.service.mjs +3 -3
  34. package/esm2022/lib/techlify-feature/techlify-feature.service.mjs +3 -3
  35. package/esm2022/lib/techlify-icon/techlify-icon.component.mjs +7 -2
  36. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.mjs +3 -3
  37. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-subscription.service.mjs +3 -3
  38. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-type.service.mjs +3 -3
  39. package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.mjs +3 -3
  40. package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view.service.mjs +3 -3
  41. package/esm2022/lib/techlify-view/techlify-view-form/techlify-view-form.component.mjs +3 -3
  42. package/esm2022/lib/techlify-view/techlify-view.service.mjs +3 -3
  43. package/esm2022/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.mjs +3 -3
  44. package/esm2022/lib/timeline-activity/timeline-activity.service.mjs +3 -3
  45. package/esm2022/lib/user/user-enable-button-component/user-enable-button.component.mjs +5 -5
  46. package/esm2022/lib/user/user-enable-button-component/user-enable-button.module.mjs +7 -3
  47. package/esm2022/lib/user/user-sessions/user-session.service.mjs +3 -3
  48. package/esm2022/lib/user/user-sessions/user-sessions/user-sessions.component.mjs +3 -3
  49. package/esm2022/lib/user/user.service.mjs +3 -3
  50. package/esm2022/lib/user/users-view-all.component.mjs +3 -3
  51. package/esm2022/lib/user-clients-list/user-client.service.mjs +3 -3
  52. package/esm2022/lib/user-clients-list/user-clients-list.component.mjs +3 -3
  53. package/fesm2022/ngx-techlify-core.mjs +199 -243
  54. package/fesm2022/ngx-techlify-core.mjs.map +1 -1
  55. package/lib/access-control-config/access-control-config.service.d.ts +2 -2
  56. package/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.d.ts +2 -2
  57. package/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.d.ts +2 -2
  58. package/lib/app-admin/admin-role/admin-role.service.d.ts +2 -2
  59. package/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.d.ts +2 -2
  60. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +7 -11
  61. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +0 -2
  62. package/lib/audit-log/audit-log.service.d.ts +2 -2
  63. package/lib/base-model/index.d.ts +3 -3
  64. package/lib/base-model/{techlify-form-component.class.d.ts → techlify-form-component.d.ts} +7 -6
  65. package/lib/base-model/{techlify-listing-component.class.d.ts → techlify-list-component.d.ts} +6 -6
  66. package/lib/base-model/{techlify-service.class.d.ts → techlify-service.d.ts} +1 -1
  67. package/lib/company-information/client.service.d.ts +2 -2
  68. package/lib/company-information/company-information/company-information.component.d.ts +2 -2
  69. package/lib/delete-button/techlify-delete-button.component.d.ts +2 -2
  70. package/lib/entity-files/entity-file.service.d.ts +2 -2
  71. package/lib/form-configuration/form-configuration-form-field.service.d.ts +2 -2
  72. package/lib/form-configuration/form-configuration-form.service.d.ts +2 -2
  73. package/lib/login/login-form-fields/login-form-fields.component.d.ts +2 -2
  74. package/lib/note/note-list/note-list.component.d.ts +2 -2
  75. package/lib/pdf-button/pdf-button.component.d.ts +2 -1
  76. package/lib/reset-password/reset-password.component.d.ts +2 -2
  77. package/lib/reset-password/reset-password.service.d.ts +2 -2
  78. package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +2 -2
  79. package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +2 -2
  80. package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +2 -2
  81. package/lib/restrictors/restrictor.service.d.ts +2 -2
  82. package/lib/subscription/subscription-form/subscription-form.component.d.ts +2 -2
  83. package/lib/subscription/subscription-listing/subscription-listing.component.d.ts +2 -2
  84. package/lib/subscription/subscription-package-listing/subscription-package-listing.component.d.ts +2 -2
  85. package/lib/subscription/subscription-package.service.d.ts +2 -2
  86. package/lib/subscription/subscription.service.d.ts +2 -2
  87. package/lib/techlify-feature/techlify-feature.service.d.ts +2 -2
  88. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.d.ts +2 -2
  89. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-subscription.service.d.ts +2 -2
  90. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-type.service.d.ts +2 -2
  91. package/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.d.ts +2 -2
  92. package/lib/techlify-view/my-techlify-view-listing/my-techlify-view.service.d.ts +2 -2
  93. package/lib/techlify-view/techlify-view-form/techlify-view-form.component.d.ts +2 -2
  94. package/lib/techlify-view/techlify-view.service.d.ts +2 -2
  95. package/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.d.ts +2 -2
  96. package/lib/timeline-activity/timeline-activity.service.d.ts +2 -2
  97. package/lib/user/user-enable-button-component/user-enable-button.module.d.ts +2 -1
  98. package/lib/user/user-sessions/user-session.service.d.ts +2 -2
  99. package/lib/user/user-sessions/user-sessions/user-sessions.component.d.ts +2 -2
  100. package/lib/user/user.service.d.ts +2 -2
  101. package/lib/user/users-view-all.component.d.ts +2 -2
  102. package/lib/user-clients-list/user-client.service.d.ts +2 -2
  103. package/lib/user-clients-list/user-clients-list.component.d.ts +2 -2
  104. package/package.json +1 -1
  105. package/esm2022/lib/base-model/techlify-form-component.class.mjs +0 -119
  106. package/esm2022/lib/base-model/techlify-listing-component.class.mjs +0 -289
  107. package/esm2022/lib/base-model/techlify-service.class.mjs +0 -68
@@ -1,7 +1,7 @@
1
- import { TechlifyServiceBaseClass } from '../base-model';
1
+ import { TechlifyService } from '../base-model';
2
2
  import { HttpService } from '../core';
3
3
  import * as i0 from "@angular/core";
4
- export declare class TimelineActivityService extends TechlifyServiceBaseClass {
4
+ export declare class TimelineActivityService extends TechlifyService {
5
5
  constructor(httpService: HttpService);
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TimelineActivityService, never>;
7
7
  static ɵprov: i0.ɵɵInjectableDeclaration<TimelineActivityService>;
@@ -3,8 +3,9 @@ import * as i1 from "./user-enable-button.component";
3
3
  import * as i2 from "@angular/common";
4
4
  import * as i3 from "../../material.module";
5
5
  import * as i4 from "@angular/flex-layout";
6
+ import * as i5 from "../../techlify-icon/techlify-icon.module";
6
7
  export declare class UserEnableButtonModule {
7
8
  static ɵfac: i0.ɵɵFactoryDeclaration<UserEnableButtonModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<UserEnableButtonModule, [typeof i1.UserEnableButtonComponent], [typeof i2.CommonModule, typeof i3.MaterialModule, typeof i4.FlexLayoutModule], [typeof i1.UserEnableButtonComponent]>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UserEnableButtonModule, [typeof i1.UserEnableButtonComponent], [typeof i2.CommonModule, typeof i3.MaterialModule, typeof i4.FlexLayoutModule, typeof i5.TechlifyIconModule], [typeof i1.UserEnableButtonComponent]>;
9
10
  static ɵinj: i0.ɵɵInjectorDeclaration<UserEnableButtonModule>;
10
11
  }
@@ -1,7 +1,7 @@
1
- import { TechlifyServiceBaseClass } from '../../base-model';
1
+ import { TechlifyService } from '../../base-model';
2
2
  import { HttpService } from '../../core';
3
3
  import * as i0 from "@angular/core";
4
- export declare class UserSessionService extends TechlifyServiceBaseClass {
4
+ export declare class UserSessionService extends TechlifyService {
5
5
  constructor(httpService: HttpService);
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<UserSessionService, never>;
7
7
  static ɵprov: i0.ɵɵInjectableDeclaration<UserSessionService>;
@@ -1,9 +1,9 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { TechlifyListingControllerInterface } from '../../../base-model';
2
+ import { TechlifyListComponent } from '../../../base-model';
3
3
  import { User } from '../../user.model';
4
4
  import { UserSessionService } from "../user-session.service";
5
5
  import * as i0 from "@angular/core";
6
- export declare class UserSessionsComponent extends TechlifyListingControllerInterface implements OnInit {
6
+ export declare class UserSessionsComponent extends TechlifyListComponent implements OnInit {
7
7
  protected service: UserSessionService;
8
8
  user: User;
9
9
  displayedColumns: string[];
@@ -1,7 +1,7 @@
1
1
  import { HttpService } from '../core';
2
- import { TechlifyServiceBaseClass } from '../base-model';
2
+ import { TechlifyService } from '../base-model';
3
3
  import * as i0 from "@angular/core";
4
- export declare class UserService extends TechlifyServiceBaseClass {
4
+ export declare class UserService extends TechlifyService {
5
5
  constructor(http: HttpService);
6
6
  getUsers(filterModel: any): Promise<Object>;
7
7
  getUser(userId: any): Promise<Object>;
@@ -6,9 +6,9 @@ import { UserService } from './user.service';
6
6
  import { MultiUserConfig, UserConfigService } from '../user-config';
7
7
  import { UntypedFormBuilder } from '@angular/forms';
8
8
  import { AlertService } from '../core';
9
- import { TechlifyListingControllerInterface } from '../base-model';
9
+ import { TechlifyListComponent } from '../base-model';
10
10
  import * as i0 from "@angular/core";
11
- export declare class UsersViewAllComponent extends TechlifyListingControllerInterface implements OnInit {
11
+ export declare class UsersViewAllComponent extends TechlifyListComponent implements OnInit {
12
12
  private alertService;
13
13
  currentUserService: CurrentUserService;
14
14
  userConfigService: UserConfigService;
@@ -1,8 +1,8 @@
1
- import { TechlifyServiceBaseClass } from '../base-model';
1
+ import { TechlifyService } from '../base-model';
2
2
  import { HttpService } from '../core';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
- export declare class UserClientService extends TechlifyServiceBaseClass {
5
+ export declare class UserClientService extends TechlifyService {
6
6
  constructor(httpService: HttpService);
7
7
  enable(userClient: any, params?: any): Observable<any>;
8
8
  disable(userClient: any, params?: any): Observable<any>;
@@ -1,9 +1,9 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { User } from '../user/user.model';
3
- import { TechlifyListingControllerInterface } from '../base-model';
3
+ import { TechlifyListComponent } from '../base-model';
4
4
  import { UserClientService } from './user-client.service';
5
5
  import * as i0 from "@angular/core";
6
- export declare class UserClientsListComponent extends TechlifyListingControllerInterface implements OnInit {
6
+ export declare class UserClientsListComponent extends TechlifyListComponent implements OnInit {
7
7
  protected service: UserClientService;
8
8
  user: User;
9
9
  displayedColumns: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-techlify-core",
3
- "version": "18.57.0",
3
+ "version": "18.58.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18",
6
6
  "@angular/core": ">=18",
@@ -1,119 +0,0 @@
1
- import { Directive, EventEmitter, inject, Input, Optional, Output } from '@angular/core';
2
- import { finalize } from 'rxjs';
3
- import { AlertService } from '../core/alert.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../core/form-validator.service";
6
- import * as i2 from "./techlify-service.class";
7
- /**
8
- * Interface used to ensure we have a consistent structure across our form components
9
- *
10
- * It also provides some abstraction of repeated code to reduce our codebase size
11
- *
12
- * @todo This should be moved to ngx-techlify-core
13
- *
14
- * Advantages of this abstract class
15
- * - Less code, less maintenance, less bugs
16
- * - more consistent code
17
- * - comments on more code
18
- * - save time, save energy
19
- */
20
- export class TechlifyFormComponentInterface {
21
- constructor(formValidatorService, service) {
22
- this.formValidatorService = formValidatorService;
23
- this.service = service;
24
- //Boolean to denote the form is in API progress
25
- this.isWorking = false;
26
- //Array of created multiple entries
27
- this.createdEntries = [];
28
- //Boolean to denote if form is in update mode
29
- this.isUpdate = false;
30
- //Emits an event once form submit is success
31
- this.success = new EventEmitter();
32
- //Injected alert service
33
- this.alertService = inject(AlertService, { optional: true });
34
- }
35
- /**
36
- * Submits the form
37
- * @param model form model optional, if needed to be overriden
38
- * @returns
39
- */
40
- submit(model) {
41
- this.form.markAllAsTouched();
42
- if (!this.service) {
43
- throw new Error(`${this.constructor.name}: Service is required to submit the form`);
44
- }
45
- if (!this.form.valid) {
46
- return;
47
- }
48
- if (!model) {
49
- model = this.form.value;
50
- }
51
- this.isWorking = true;
52
- (this.isUpdate ?
53
- this.service.update(model) :
54
- this.service.store(model))
55
- .pipe(finalize(() => this.isWorking = false))
56
- .subscribe((res) => {
57
- this.createdEntries.unshift(res?.item);
58
- if (model?.is_create_another) {
59
- this.alertService.addAlert('Successfully Created', 'success');
60
- return;
61
- }
62
- this.success.emit(this.isUpdate ? res?.item : this.createdEntries);
63
- if (this.dialogRef) {
64
- this.dialogRef.close(res.item);
65
- }
66
- });
67
- }
68
- /**
69
- * Close the active dialog
70
- */
71
- closeDialog() {
72
- if (this.createdEntries?.length > 0) {
73
- this.success.emit(this.createdEntries);
74
- }
75
- this.dialogRef.close();
76
- }
77
- /**
78
- * Resets the value of a field in the HTML form
79
- *
80
- * @param event
81
- * @param field
82
- */
83
- resetFieldValue(event, field) {
84
- this.form?.get(field)?.setValue('');
85
- }
86
- /**
87
- * Retrieves the value of a field from the HTML form
88
- *
89
- * @param field
90
- * @returns
91
- */
92
- getFieldValue(field) {
93
- return this.form?.get(field)?.value;
94
- }
95
- /**
96
- * Method to evaluate form fields
97
- * */
98
- isFieldValid(field) {
99
- return this.formValidatorService.isFieldValid(field, this.form);
100
- }
101
- /**
102
- * Method to find error in form fields
103
- * */
104
- getErrorMessage(field) {
105
- return this.formValidatorService.getErrorMessage(field, this.form, this.errorMessages);
106
- }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyFormComponentInterface, deps: [{ token: i1.FormValidatorService }, { token: i2.TechlifyServiceBaseClass, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
108
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyFormComponentInterface, inputs: { isUpdate: "isUpdate" }, outputs: { success: "success" }, ngImport: i0 }); }
109
- }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyFormComponentInterface, decorators: [{
111
- type: Directive
112
- }], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.TechlifyServiceBaseClass, decorators: [{
113
- type: Optional
114
- }] }], propDecorators: { isUpdate: [{
115
- type: Input
116
- }], success: [{
117
- type: Output
118
- }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZm9ybS1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2Jhc2UtbW9kZWwvdGVjaGxpZnktZm9ybS1jb21wb25lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXJEOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sT0FBZ0IsOEJBQThCO0lBMEJsRCxZQUNZLG9CQUEwQyxFQUM5QixPQUFrQztRQUQ5Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBcEIxRCwrQ0FBK0M7UUFDL0MsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUszQixtQ0FBbUM7UUFDbkMsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFFekIsNkNBQTZDO1FBQ3BDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkMsNENBQTRDO1FBQ2xDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVDLHdCQUF3QjtRQUNkLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBTWxFLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIs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IjpbImltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4uL2NvcmUvZm9ybS12YWxpZGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzIH0gZnJvbSAnLi90ZWNobGlmeS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9hbGVydC5zZXJ2aWNlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdXNlZCB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbnNpc3RlbnQgc3RydWN0dXJlIGFjcm9zcyBvdXIgZm9ybSBjb21wb25lbnRzXG4gKlxuICogSXQgYWxzbyBwcm92aWRlcyBzb21lIGFic3RyYWN0aW9uIG9mIHJlcGVhdGVkIGNvZGUgdG8gcmVkdWNlIG91ciBjb2RlYmFzZSBzaXplXG4gKlxuICogQHRvZG8gVGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gbmd4LXRlY2hsaWZ5LWNvcmVcbiAqXG4gKiBBZHZhbnRhZ2VzIG9mIHRoaXMgYWJzdHJhY3QgY2xhc3NcbiAqIC0gTGVzcyBjb2RlLCBsZXNzIG1haW50ZW5hbmNlLCBsZXNzIGJ1Z3NcbiAqIC0gbW9yZSBjb25zaXN0ZW50IGNvZGVcbiAqIC0gY29tbWVudHMgb24gbW9yZSBjb2RlXG4gKiAtIHNhdmUgdGltZSwgc2F2ZSBlbmVyZ3lcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGVjaGxpZnlGb3JtQ29tcG9uZW50SW50ZXJmYWNlIHtcblxuICAvL0Zvcm0gYnVpbGRlciBpbnN0YW5jZVxuICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8vRXJyb3IgbWVzc2FnZXMgY29uZmlnIGZvciB0aGUgZm9ybVxuICBlcnJvck1lc3NhZ2VzOiBhbnk7XG5cbiAgLy9Cb29sZWFuIHRvIGRlbm90ZSB0aGUgZm9ybSBpcyBpbiBBUEkgcHJvZ3Jlc3NcbiAgaXNXb3JraW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy9Gb3JtIGRpYWxvZ3JlZiByZWZlcmVuY2VcbiAgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8YW55LCBhbnk+O1xuXG4gIC8vQXJyYXkgb2YgY3JlYXRlZCBtdWx0aXBsZSBlbnRyaWVzXG4gIGNyZWF0ZWRFbnRyaWVzOiBhbnkgPSBbXTtcblxuICAvL0Jvb2xlYW4gdG8gZGVub3RlIGlmIGZvcm0gaXMgaW4gdXBkYXRlIG1vZGVcbiAgQElucHV0KCkgaXNVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL0VtaXRzIGFuIGV2ZW50IG9uY2UgZm9ybSBzdWJtaXQgaXMgc3VjY2Vzc1xuICBAT3V0cHV0KCkgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vSW5qZWN0ZWQgYWxlcnQgc2VydmljZVxuICBwcm90ZWN0ZWQgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBzZXJ2aWNlPzogVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzKSB7XG5cbiAgfVxuICAvKipcbiAgICogU3VibWl0cyB0aGUgZm9ybVxuICAgKiBAcGFyYW0gbW9kZWwgZm9ybSBtb2RlbCBvcHRpb25hbCwgaWYgbmVlZGVkIHRvIGJlIG92ZXJyaWRlblxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHN1Ym1pdChtb2RlbD86IGFueSkge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogU2VydmljZSBpcyByZXF1aXJlZCB0byBzdWJtaXQgdGhlIGZvcm1gXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICBtb2RlbCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIChcbiAgICAgIHRoaXMuaXNVcGRhdGUgP1xuICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlKG1vZGVsKSA6XG4gICAgICAgIHRoaXMuc2VydmljZS5zdG9yZShtb2RlbClcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1dvcmtpbmcgPSBmYWxzZSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZWRFbnRyaWVzLnVuc2hpZnQocmVzPy5pdGVtKTtcbiAgICAgICAgaWYgKG1vZGVsPy5pc19jcmVhdGVfYW5vdGhlcikge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdTdWNjZXNzZnVsbHkgQ3JlYXRlZCcsICdzdWNjZXNzJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWNjZXNzLmVtaXQodGhpcy5pc1VwZGF0ZSA/IHJlcz8uaXRlbSA6IHRoaXMuY3JlYXRlZEVudHJpZXMpO1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXMuaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBhY3RpdmUgZGlhbG9nXG4gICAqL1xuICBjbG9zZURpYWxvZygpIHtcbiAgICBpZiAodGhpcy5jcmVhdGVkRW50cmllcz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zdWNjZXNzLmVtaXQodGhpcy5jcmVhdGVkRW50cmllcyk7XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIGluIHRoZSBIVE1MIGZvcm1cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBmaWVsZFxuICAgKi9cbiAgcmVzZXRGaWVsZFZhbHVlKGV2ZW50OiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm0/LmdldChmaWVsZCk/LnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIGEgZmllbGQgZnJvbSB0aGUgSFRNTCBmb3JtXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RmllbGRWYWx1ZShmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KGZpZWxkKT8udmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzXG4gICAqICovXG4gIGlzRmllbGRWYWxpZChmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuaXNGaWVsZFZhbGlkKGZpZWxkLCB0aGlzLmZvcm0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzXG4gICAqICovXG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKGZpZWxkLCB0aGlzLmZvcm0sIHRoaXMuZXJyb3JNZXNzYWdlcyk7XG4gIH1cblxufVxuIl19
@@ -1,289 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { debounceTime, finalize } from 'rxjs/operators';
3
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
4
- import { Title } from '@angular/platform-browser';
5
- import { Directive, inject, Optional } from '@angular/core';
6
- import { EnvironmentService } from '../core/environment.service';
7
- import { RequestHelperService } from '../request-helper/request-helper.service';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./techlify-service.class";
10
- /**
11
- * Interface used to ensure we have a consistent structure across our listing pages
12
- *
13
- * @todo This should be moved to ngx-techlify-core
14
- *
15
- * Advantages of this abstract class
16
- * - Less code, less maintenance, less bugs
17
- * - more consistent code
18
- * - comments on more code
19
- * - save time, save energy
20
- */
21
- let TechlifyListingControllerInterface = class TechlifyListingControllerInterface {
22
- get isFilterPatchFromRoute() {
23
- return this._isFilterPatchFromRoute;
24
- }
25
- set isFilterPatchFromRoute(value) {
26
- this._isFilterPatchFromRoute = value;
27
- }
28
- /**
29
- * Child classes can override this.
30
- * If left undefined/empty, falls back to environment.appTitle
31
- */
32
- get pageTitle() {
33
- return undefined; // default
34
- }
35
- constructor(service) {
36
- this.service = service;
37
- this.models = [];
38
- this.selectedModelIds = [];
39
- this.isAllSelected = false;
40
- this.page = 1;
41
- this.perPage = 25;
42
- this.lastPage = 0;
43
- this.isWorking = false;
44
- this.isViewLoaded = false;
45
- this.columnConfigs = [];
46
- /**
47
- * Boolean to turn off, if we don't want to patch filters from route.
48
- * This can be overriden in child classes if need
49
- */
50
- this._isFilterPatchFromRoute = true;
51
- this.titleService = inject(Title, { optional: true });
52
- this.environmentService = inject(EnvironmentService, { optional: true });
53
- //Request helper service to inherited and overriden if needed
54
- this.requestHelperService = inject(RequestHelperService);
55
- const resolvedTitle = this.pageTitle && this.pageTitle.trim().length > 0
56
- ? this.pageTitle
57
- : this.environmentService.get().appTitle;
58
- this.titleService.setTitle(resolvedTitle);
59
- }
60
- /**
61
- * Function that listens for any changes in the filter form group
62
- * It updates the route automatically
63
- * Also reload the page on change
64
- */
65
- listenFilterChanges() {
66
- this.filterForm.valueChanges.pipe(debounceTime(500), untilDestroyed(this))
67
- .subscribe(_ => {
68
- if (this.isFilterPatchFromRoute) {
69
- const unformatedFilters = JSON.parse(JSON.stringify(this.filterForm.value));
70
- this.filters = this.requestHelperService.convertToFormData(unformatedFilters);
71
- this.requestHelperService.updateQueryParams(this.filters);
72
- }
73
- this.reload();
74
- });
75
- }
76
- /**
77
- * Function decodes the route params and patches the filter
78
- * Setup the filterFormConfigurtion to override for multiple and date attributes.
79
- */
80
- patchFiltersFromRoute() {
81
- this.requestHelperService.updateFormWithQueryParams(this.filterForm, this.filterFormConfiguration);
82
- }
83
- /**
84
- * Function that loads the main models of the application
85
- */
86
- loadData(filters) {
87
- if (!this.service) {
88
- throw new Error(`${this.constructor.name}: Service is required to load the data`);
89
- }
90
- this.isWorking = true;
91
- if (!filters) {
92
- filters = JSON.parse(JSON.stringify(this.filterForm.value));
93
- filters.perPage = this.perPage;
94
- filters.page = this.page;
95
- }
96
- this.service.index(filters)
97
- .pipe(finalize(() => this.isWorking = false))
98
- .subscribe((result) => {
99
- this.lastPage = result?.last_page || this.page;
100
- if (result?.data?.length > 0) {
101
- this.models = this.models.concat(result.data);
102
- }
103
- });
104
- }
105
- ;
106
- /**
107
- * Reload all data from page 1
108
- */
109
- reload() {
110
- this.models = [];
111
- this.selectedModelIds = [];
112
- this.page = 1;
113
- if (!this.isWorking) {
114
- this.loadData();
115
- }
116
- }
117
- /**
118
- * Can be called when the user is scrolling,
119
- * to trigger loading a new page of data
120
- */
121
- onScroll() {
122
- if (!this.isWorking && this.page < this.lastPage) {
123
- this.page += 1;
124
- this.loadData();
125
- }
126
- }
127
- /**
128
- * Reset the Filter.
129
- *
130
- * @param field Field name.
131
- */
132
- resetFilter(field) {
133
- this.filterForm.get(field).reset('');
134
- }
135
- /**
136
- * @deprecated will be removed in release/18.55.0
137
- * Use `modelsUpdatedById` instead, which finds the model by id and does not require tracking the index.
138
- *
139
- * Updates a specific row in the table by index.
140
- * @param model The model to be updated.
141
- * @param index The index of the model in the list.
142
- */
143
- modelUpdated(model, index) {
144
- this.models[index] = model;
145
- this.models = [...this.models];
146
- }
147
- /**
148
- * Updates one or more models in the list by matching on their `id`.
149
- * Accepts a single model or an array of models.
150
- * @param models The updated model or array of models.
151
- */
152
- modelsUpdatedById(models) {
153
- if (!Array.isArray(models)) {
154
- models = [models];
155
- }
156
- models.forEach((updatedModel) => {
157
- const index = this.models.findIndex((m) => m.id === updatedModel.id);
158
- if (index !== -1) {
159
- this.models[index] = updatedModel;
160
- }
161
- });
162
- this.models = [...this.models];
163
- this.selectedModelIds = [];
164
- }
165
- /**
166
- * Deletes one or more models in the list by matching on their `id`.
167
- * Accepts a single model or an array of models.
168
- * @param models The updated model or array of models.
169
- */
170
- modelsDeletedById(models) {
171
- if (!Array.isArray(models)) {
172
- models = [models];
173
- }
174
- this.models = this.models.filter((m) => !(models.some((item) => item.id === m.id)));
175
- this.selectedModelIds = [];
176
- }
177
- /**
178
- * Adds a new model at the first position in the table.
179
- * @param model The new model to be added.
180
- */
181
- modelCreated(model) {
182
- if (Array.isArray(model)) {
183
- //When create another feature is used, we get array of models
184
- this.models.unshift(...model);
185
- }
186
- else {
187
- this.models.unshift(model);
188
- }
189
- this.models = [...this.models];
190
- }
191
- /**
192
- * @deprecated will be removed in release/18.57.0
193
- *
194
- * Remove a model from the list.
195
- * @param index Index of the model in the list.
196
- */
197
- modelDeleted(index) {
198
- this.models.splice(index, 1);
199
- this.models = [...this.models];
200
- }
201
- /**
202
- * Used for multi select
203
- * Trigerred when select all is toggled
204
- */
205
- selectAll() {
206
- this.selectedModelIds = [];
207
- this.models.map((model) => {
208
- model.is_selected = this.isAllSelected;
209
- if (this.isAllSelected) {
210
- this.selectedModelIds.push(model.id);
211
- }
212
- });
213
- this.models = [...this.models];
214
- }
215
- /**
216
- * Used for multi select
217
- * Trigerred if any entry section is modified
218
- */
219
- isSelectionModified(event, model) {
220
- this.isAllSelected = false;
221
- if (event.checked) {
222
- this.selectedModelIds.push(model?.id);
223
- }
224
- else {
225
- this.selectedModelIds = this.selectedModelIds.filter((modelId) => modelId != model?.id);
226
- }
227
- }
228
- /**
229
- * Defualt method to listen to sort column updates
230
- * @param event
231
- */
232
- sortColumn(event) {
233
- const direction = event.direction.toString().toUpperCase();
234
- this.models = [];
235
- this.filterForm.get('sort_by').setValue(`${event?.active}|${direction}`);
236
- }
237
- /**
238
- * It should be overrided in child class to reset a filter form instance.
239
- * Used by setView method.
240
- */
241
- resetFilterForm() {
242
- //If filterForm exists, then reset
243
- if (this.filterForm) {
244
- this.filterForm.reset();
245
- }
246
- }
247
- /**
248
- * It should be overrided in child class to reset column configs.
249
- * Used by setView method.
250
- */
251
- resetColumnConfigs() {
252
- this.columnConfigs = [];
253
- }
254
- /**
255
- * Hook method used to set the selected view
256
- * @param view optional used by my-view-list
257
- */
258
- setView(view) {
259
- //Reset the query params
260
- this.requestHelperService.updateQueryParams({});
261
- this.isViewLoaded = false;
262
- this.resetColumnConfigs();
263
- this.resetFilterForm();
264
- setTimeout(() => {
265
- if (view) {
266
- //If there is a view, then set it.
267
- //Setup view filters
268
- this.filterForm.setValue(this.requestHelperService.convertToFormData(view?.filters));
269
- //Setup view columns
270
- this.columnConfigs.forEach(column => {
271
- column.isSelected = (view?.columns).some(col => col === column.def);
272
- });
273
- }
274
- this.isViewLoaded = true;
275
- }, 500);
276
- }
277
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyListingControllerInterface, deps: [{ token: i1.TechlifyServiceBaseClass, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
278
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyListingControllerInterface, ngImport: i0 }); }
279
- };
280
- TechlifyListingControllerInterface = __decorate([
281
- UntilDestroy()
282
- ], TechlifyListingControllerInterface);
283
- export { TechlifyListingControllerInterface };
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyListingControllerInterface, decorators: [{
285
- type: Directive
286
- }], ctorParameters: () => [{ type: i1.TechlifyServiceBaseClass, decorators: [{
287
- type: Optional
288
- }] }] });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktbGlzdGluZy1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2Jhc2UtbW9kZWwvdGVjaGxpZnktbGlzdGluZy1jb21wb25lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFJaEY7Ozs7Ozs7Ozs7R0FVRztBQUdJLElBQWUsa0NBQWtDLEdBQWpELE1BQWUsa0NBQWtDO0lBcUJ0RCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBSSxzQkFBc0IsQ0FBQyxLQUFjO1FBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQXFCRDs7O1FBR0k7SUFDSixJQUFjLFNBQVM7UUFDckIsT0FBTyxTQUFTLENBQUMsQ0FBQyxVQUFVO0lBQzlCLENBQUM7SUFTRCxZQUFrQyxPQUFrQztRQUFsQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQTVEcEUsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUNuQixxQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFDN0Isa0JBQWEsR0FBRyxLQUFLLENBQUM7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aEIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1Qsa0NBQWtDO2dCQUNsQyxvQkFBb0I7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDckYsb0JBQW9CO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDbEMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFvQixDQUFBLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEYsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0E5U21CLGtDQUFrQzttR0FBbEMsa0NBQWtDOztBQUFsQyxrQ0FBa0M7SUFGdkQsWUFBWSxFQUFFO0dBRU8sa0NBQWtDLENBK1N2RDs7NEZBL1NxQixrQ0FBa0M7a0JBRHZELFNBQVM7OzBCQStESyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcmVxdWVzdC1oZWxwZXIvcmVxdWVzdC1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3MgfSBmcm9tICcuL3RlY2hsaWZ5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vY29sdW1uLXNlbGVjdG9yJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdXNlZCB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbnNpc3RlbnQgc3RydWN0dXJlIGFjcm9zcyBvdXIgbGlzdGluZyBwYWdlc1xuICpcbiAqIEB0b2RvIFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIG5neC10ZWNobGlmeS1jb3JlXG4gKlxuICogQWR2YW50YWdlcyBvZiB0aGlzIGFic3RyYWN0IGNsYXNzXG4gKiAtIExlc3MgY29kZSwgbGVzcyBtYWludGVuYW5jZSwgbGVzcyBidWdzXG4gKiAtIG1vcmUgY29uc2lzdGVudCBjb2RlXG4gKiAtIGNvbW1lbnRzIG9uIG1vcmUgY29kZVxuICogLSBzYXZlIHRpbWUsIHNhdmUgZW5lcmd5XG4gKi9cbkBVbnRpbERlc3Ryb3koKVxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSB7XG5cbiAgbW9kZWxzOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE1vZGVsSWRzOiBhbnlbXSA9IFtdO1xuICBpc0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gIHBhZ2UgPSAxO1xuICBwZXJQYWdlID0gMjU7XG4gIGxhc3RQYWdlID0gMDtcbiAgaXNXb3JraW5nID0gZmFsc2U7XG4gIGZpbHRlckZvcm06IGFueTtcbiAgaXNWaWV3TG9hZGVkID0gZmFsc2U7XG4gIGNvbHVtbkNvbmZpZ3M6IENvbHVtbkNvbmZpZ1tdID0gW107XG5cbiAgLy9GaWx0ZXJzIHRvIGJlIGV4cG9ydGVkIGZvciB2aWV3IGludGVncmF0aW9uXG4gIGZpbHRlcnM6IGFueTtcblxuICAvKipcbiAgICogQm9vbGVhbiB0byB0dXJuIG9mZiwgaWYgd2UgZG9uJ3Qgd2FudCB0byBwYXRjaCBmaWx0ZXJzIGZyb20gcm91dGUuXG4gICAqIFRoaXMgY2FuIGJlIG92ZXJyaWRlbiBpbiBjaGlsZCBjbGFzc2VzIGlmIG5lZWQgXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lzRmlsdGVyUGF0Y2hGcm9tUm91dGUgPSB0cnVlO1xuICBnZXQgaXNGaWx0ZXJQYXRjaEZyb21Sb3V0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNGaWx0ZXJQYXRjaEZyb21Sb3V0ZTtcbiAgfVxuICBzZXQgaXNGaWx0ZXJQYXRjaEZyb21Sb3V0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzRmlsdGVyUGF0Y2hGcm9tUm91dGUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgZm9ybSBjb25maWd1cmF0aW9uIHVzZWQgdG8gZGVjb2RlIHRoZSByb3V0ZSBwYXJhbXMuXG4gICAqIEVnOiBPdmVycmlkZSBpbiBjaGlsZCBjbGFzc1xuICAgKiAgYGBgIFxuICAgKiBmaWx0ZXJGb3JtQ29uZmlndXJhdGlvbjogYW55ID0ge1xuICAgIHN0YXR1c19pZDogeyBtdWx0aXBsZTogdHJ1ZSB9LFxuICAgIGJyYW5jaF9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICBkZXBhcnRtZW50X2lkczogeyBtdWx0aXBsZTogdHJ1ZSB9LFxuICAgIGVtcGxveWVlX2lkczogeyBtdWx0aXBsZTogdHJ1ZSB9LFxuICAgIGNvdXJzZV9pZHM6IHsgbXVsdGlwbGU6IHRydWUgfSxcbiAgICBkYXRlX2Zyb206IHsgZGF0ZTogdHJ1ZSB9LFxuICAgIGRhdGVfdG86IHsgZGF0ZTogdHJ1ZSB9LFxuICAgIGR1ZV9kYXRlX2Zyb206IHsgZGF0ZTogdHJ1ZSB9LFxuICAgIGR1ZV9kYXRlX3RvOiB7IGRhdGU6IHRydWUgfSxcbiAgIH0gXG4gICAqYGBgXG4gICAqL1xuICBmaWx0ZXJGb3JtQ29uZmlndXJhdGlvbjogYW55O1xuXG4gIC8qKlxuICAgICogQ2hpbGQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcy5cbiAgICAqIElmIGxlZnQgdW5kZWZpbmVkL2VtcHR5LCBmYWxscyBiYWNrIHRvIGVudmlyb25tZW50LmFwcFRpdGxlXG4gICAgKi9cbiAgcHJvdGVjdGVkIGdldCBwYWdlVGl0bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBkZWZhdWx0XG4gIH1cblxuXG4gIHByaXZhdGUgdGl0bGVTZXJ2aWNlID0gaW5qZWN0KFRpdGxlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZSA9IGluamVjdChFbnZpcm9ubWVudFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLy9SZXF1ZXN0IGhlbHBlciBzZXJ2aWNlIHRvIGluaGVyaXRlZCBhbmQgb3ZlcnJpZGVuIGlmIG5lZWRlZFxuICBwcm90ZWN0ZWQgcmVxdWVzdEhlbHBlclNlcnZpY2UgPSBpbmplY3QoUmVxdWVzdEhlbHBlclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByb3RlY3RlZCBzZXJ2aWNlPzogVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRUaXRsZSA9XG4gICAgICB0aGlzLnBhZ2VUaXRsZSAmJiB0aGlzLnBhZ2VUaXRsZS50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMucGFnZVRpdGxlXG4gICAgICAgIDogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0KCkuYXBwVGl0bGU7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUocmVzb2x2ZWRUaXRsZSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBsaXN0ZW5zIGZvciBhbnkgY2hhbmdlcyBpbiB0aGUgZmlsdGVyIGZvcm0gZ3JvdXBcbiAgICogSXQgdXBkYXRlcyB0aGUgcm91dGUgYXV0b21hdGljYWxseVxuICAgKiBBbHNvIHJlbG9hZCB0aGUgcGFnZSBvbiBjaGFuZ2VcbiAgICovXG4gIGxpc3RlbkZpbHRlckNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApLCB1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlsdGVyUGF0Y2hGcm9tUm91dGUpIHtcbiAgICAgICAgICBjb25zdCB1bmZvcm1hdGVkRmlsdGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJGb3JtLnZhbHVlKSk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS5jb252ZXJ0VG9Gb3JtRGF0YSh1bmZvcm1hdGVkRmlsdGVycyk7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0SGVscGVyU2VydmljZS51cGRhdGVRdWVyeVBhcmFtcyh0aGlzLmZpbHRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiBkZWNvZGVzIHRoZSByb3V0ZSBwYXJhbXMgYW5kIHBhdGNoZXMgdGhlIGZpbHRlclxuICAgKiBTZXR1cCB0aGUgZmlsdGVyRm9ybUNvbmZpZ3VydGlvbiB0byBvdmVycmlkZSBmb3IgbXVsdGlwbGUgYW5kIGRhdGUgYXR0cmlidXRlcy5cbiAgICovXG4gIHBhdGNoRmlsdGVyc0Zyb21Sb3V0ZSgpIHtcbiAgICB0aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLnVwZGF0ZUZvcm1XaXRoUXVlcnlQYXJhbXModGhpcy5maWx0ZXJGb3JtLCB0aGlzLmZpbHRlckZvcm1Db25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IGxvYWRzIHRoZSBtYWluIG1vZGVscyBvZiB0aGUgYXBwbGljYXRpb25cbiAgICovXG4gIGxvYWREYXRhKGZpbHRlcnM/OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBTZXJ2aWNlIGlzIHJlcXVpcmVkIHRvIGxvYWQgdGhlIGRhdGFgXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgaWYgKCFmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlckZvcm0udmFsdWUpKTtcbiAgICAgIGZpbHRlcnMucGVyUGFnZSA9IHRoaXMucGVyUGFnZTtcbiAgICAgIGZpbHRlcnMucGFnZSA9IHRoaXMucGFnZTtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlLmluZGV4KGZpbHRlcnMpXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzV29ya2luZyA9IGZhbHNlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGFzdFBhZ2UgPSByZXN1bHQ/Lmxhc3RfcGFnZSB8fCB0aGlzLnBhZ2U7XG4gICAgICAgIGlmIChyZXN1bHQ/LmRhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLm1vZGVscyA9IHRoaXMubW9kZWxzLmNvbmNhdChyZXN1bHQuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZWxvYWQgYWxsIGRhdGEgZnJvbSBwYWdlIDFcbiAgICovXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVscyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkcyA9IFtdO1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgaWYgKCF0aGlzLmlzV29ya2luZykge1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW4gYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgaXMgc2Nyb2xsaW5nLFxuICAgKiB0byB0cmlnZ2VyIGxvYWRpbmcgYSBuZXcgcGFnZSBvZiBkYXRhXG4gICAqL1xuICBvblNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNXb3JraW5nICYmIHRoaXMucGFnZSA8IHRoaXMubGFzdFBhZ2UpIHtcbiAgICAgIHRoaXMucGFnZSArPSAxO1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgRmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZmllbGQgRmllbGQgbmFtZS5cbiAgICovXG4gIHJlc2V0RmlsdGVyKGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpZWxkKS5yZXNldCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgd2lsbCBiZSByZW1vdmVkIGluIHJlbGVhc2UvMTguNTUuMFxuICAgKiBVc2UgYG1vZGVsc1VwZGF0ZWRCeUlkYCBpbnN0ZWFkLCB3aGljaCBmaW5kcyB0aGUgbW9kZWwgYnkgaWQgYW5kIGRvZXMgbm90IHJlcXVpcmUgdHJhY2tpbmcgdGhlIGluZGV4LlxuICAgKiBcbiAgICogVXBkYXRlcyBhIHNwZWNpZmljIHJvdyBpbiB0aGUgdGFibGUgYnkgaW5kZXguXG4gICAqIEBwYXJhbSBtb2RlbCBUaGUgbW9kZWwgdG8gYmUgdXBkYXRlZC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgbW9kZWwgaW4gdGhlIGxpc3QuXG4gICAqL1xuICBtb2RlbFVwZGF0ZWQobW9kZWw6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubW9kZWxzW2luZGV4XSA9IG1vZGVsO1xuICAgIHRoaXMubW9kZWxzID0gWy4uLnRoaXMubW9kZWxzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIG9uZSBvciBtb3JlIG1vZGVscyBpbiB0aGUgbGlzdCBieSBtYXRjaGluZyBvbiB0aGVpciBgaWRgLlxuICAgKiBBY2NlcHRzIGEgc2luZ2xlIG1vZGVsIG9yIGFuIGFycmF5IG9mIG1vZGVscy5cbiAgICogQHBhcmFtIG1vZGVscyBUaGUgdXBkYXRlZCBtb2RlbCBvciBhcnJheSBvZiBtb2RlbHMuXG4gICAqL1xuICBtb2RlbHNVcGRhdGVkQnlJZChtb2RlbHM6IGFueSB8IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGVscykpIHtcbiAgICAgIG1vZGVscyA9IFttb2RlbHNdO1xuICAgIH1cbiAgICBtb2RlbHMuZm9yRWFjaCgodXBkYXRlZE1vZGVsOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RlbHMuZmluZEluZGV4KChtOiBhbnkpID0+IG0uaWQgPT09IHVwZGF0ZWRNb2RlbC5pZCk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMubW9kZWxzW2luZGV4XSA9IHVwZGF0ZWRNb2RlbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm1vZGVscyA9IFsuLi50aGlzLm1vZGVsc107XG4gICAgdGhpcy5zZWxlY3RlZE1vZGVsSWRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBvbmUgb3IgbW9yZSBtb2RlbHMgaW4gdGhlIGxpc3QgYnkgbWF0Y2hpbmcgb24gdGhlaXIgYGlkYC5cbiAgICogQWNjZXB0cyBhIHNpbmdsZSBtb2RlbCBvciBhbiBhcnJheSBvZiBtb2RlbHMuXG4gICAqIEBwYXJhbSBtb2RlbHMgVGhlIHVwZGF0ZWQgbW9kZWwgb3IgYXJyYXkgb2YgbW9kZWxzLlxuICAgKi9cbiAgbW9kZWxzRGVsZXRlZEJ5SWQobW9kZWxzOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RlbHMpKSB7XG4gICAgICBtb2RlbHMgPSBbbW9kZWxzXTtcbiAgICB9XG4gICAgdGhpcy5tb2RlbHMgPSB0aGlzLm1vZGVscy5maWx0ZXIoKG06IGFueSkgPT4gIShtb2RlbHMuc29tZSgoaXRlbTogYW55KSA9PiBpdGVtLmlkID09PSBtLmlkKSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgbW9kZWwgYXQgdGhlIGZpcnN0IHBvc2l0aW9uIGluIHRoZSB0YWJsZS5cbiAgICogQHBhcmFtIG1vZGVsIFRoZSBuZXcgbW9kZWwgdG8gYmUgYWRkZWQuXG4gICAqL1xuICBtb2RlbENyZWF0ZWQobW9kZWw6IGFueSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsKSkge1xuICAgICAgLy9XaGVuIGNyZWF0ZSBhbm90aGVyIGZlYXR1cmUgaXMgdXNlZCwgd2UgZ2V0IGFycmF5IG9mIG1vZGVsc1xuICAgICAgdGhpcy5tb2RlbHMudW5zaGlmdCguLi5tb2RlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZWxzLnVuc2hpZnQobW9kZWwpO1xuICAgIH1cbiAgICB0aGlzLm1vZGVscyA9IFsuLi50aGlzLm1vZGVsc107XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgd2lsbCBiZSByZW1vdmVkIGluIHJlbGVhc2UvMTguNTcuMFxuICAgKiBcbiAgICogUmVtb3ZlIGEgbW9kZWwgZnJvbSB0aGUgbGlzdC5cbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSBtb2RlbCBpbiB0aGUgbGlzdC5cbiAgICovXG4gIG1vZGVsRGVsZXRlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLm1vZGVscyA9IFsuLi50aGlzLm1vZGVsc107XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBmb3IgbXVsdGkgc2VsZWN0XG4gICAqIFRyaWdlcnJlZCB3aGVuIHNlbGVjdCBhbGwgaXMgdG9nZ2xlZFxuICAgKi9cbiAgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkcyA9IFtdO1xuICAgIHRoaXMubW9kZWxzLm1hcCgobW9kZWw6IGFueSkgPT4ge1xuICAgICAgbW9kZWwuaXNfc2VsZWN0ZWQgPSB0aGlzLmlzQWxsU2VsZWN0ZWQ7XG4gICAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkcy5wdXNoKG1vZGVsLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm1vZGVscyA9IFsuLi50aGlzLm1vZGVsc107XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBmb3IgbXVsdGkgc2VsZWN0XG4gICAqIFRyaWdlcnJlZCBpZiBhbnkgZW50cnkgc2VjdGlvbiBpcyBtb2RpZmllZFxuICAgKi9cbiAgaXNTZWxlY3Rpb25Nb2RpZmllZChldmVudDogYW55LCBtb2RlbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0FsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgaWYgKGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkcy5wdXNoKG1vZGVsPy5pZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsSWRzID0gdGhpcy5zZWxlY3RlZE1vZGVsSWRzLmZpbHRlcigobW9kZWxJZDogYW55KSA9PiBtb2RlbElkICE9IG1vZGVsPy5pZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZnVhbHQgbWV0aG9kIHRvIGxpc3RlbiB0byBzb3J0IGNvbHVtbiB1cGRhdGVzXG4gICAqIEBwYXJhbSBldmVudCBcbiAgICovXG4gIHNvcnRDb2x1bW4oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGV2ZW50LmRpcmVjdGlvbi50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy5tb2RlbHMgPSBbXTtcbiAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzb3J0X2J5Jykuc2V0VmFsdWUoYCR7ZXZlbnQ/LmFjdGl2ZX18JHtkaXJlY3Rpb259YCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgc2hvdWxkIGJlIG92ZXJyaWRlZCBpbiBjaGlsZCBjbGFzcyB0byByZXNldCBhIGZpbHRlciBmb3JtIGluc3RhbmNlLlxuICAgKiBVc2VkIGJ5IHNldFZpZXcgbWV0aG9kLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc2V0RmlsdGVyRm9ybSgpOiB2b2lkIHtcbiAgICAvL0lmIGZpbHRlckZvcm0gZXhpc3RzLCB0aGVuIHJlc2V0XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHNob3VsZCBiZSBvdmVycmlkZWQgaW4gY2hpbGQgY2xhc3MgdG8gcmVzZXQgY29sdW1uIGNvbmZpZ3MuXG4gICAqIFVzZWQgYnkgc2V0VmlldyBtZXRob2QuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzZXRDb2x1bW5Db25maWdzKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uQ29uZmlncyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2sgbWV0aG9kIHVzZWQgdG8gc2V0IHRoZSBzZWxlY3RlZCB2aWV3XG4gICAqIEBwYXJhbSB2aWV3IG9wdGlvbmFsIHVzZWQgYnkgbXktdmlldy1saXN0XG4gICAqL1xuICBzZXRWaWV3KHZpZXc/OiBhbnkpIHtcbiAgICAvL1Jlc2V0IHRoZSBxdWVyeSBwYXJhbXNcbiAgICB0aGlzLnJlcXVlc3RIZWxwZXJTZXJ2aWNlLnVwZGF0ZVF1ZXJ5UGFyYW1zKHt9KTtcbiAgICB0aGlzLmlzVmlld0xvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVzZXRDb2x1bW5Db25maWdzKCk7XG4gICAgdGhpcy5yZXNldEZpbHRlckZvcm0oKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgIC8vSWYgdGhlcmUgaXMgYSB2aWV3LCB0aGVuIHNldCBpdC5cbiAgICAgICAgLy9TZXR1cCB2aWV3IGZpbHRlcnNcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMucmVxdWVzdEhlbHBlclNlcnZpY2UuY29udmVydFRvRm9ybURhdGEodmlldz8uZmlsdGVycykpO1xuICAgICAgICAvL1NldHVwIHZpZXcgY29sdW1uc1xuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZ3MuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICAgIGNvbHVtbi5pc1NlbGVjdGVkID0gKHZpZXc/LmNvbHVtbnMgYXMgc3RyaW5nW10pLnNvbWUoY29sID0+IGNvbCA9PT0gY29sdW1uLmRlZik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1ZpZXdMb2FkZWQgPSB0cnVlO1xuICAgIH0sIDUwMCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,68 +0,0 @@
1
- /**
2
- * Interface used to ensure we have a consistent structure across our listing pages
3
- *
4
- * Advantages of this abstract class
5
- * - Less code, less maintenance, less bugs
6
- * - more consistent code
7
- * - comments on more code
8
- * - save time, save energy
9
- */
10
- export class TechlifyServiceBaseClass {
11
- constructor(http, baseUrl) {
12
- this.http = http;
13
- this.baseUrl = 'you-forgot-to-set-a-base-url';
14
- this.baseUrl = baseUrl;
15
- }
16
- /**
17
- * Loads a set of the model this service is for
18
- *
19
- * @param params Query parameters
20
- * @return Observable<any>
21
- */
22
- index(params, isCache) {
23
- if (isCache) {
24
- return this.http.cache().get(`api/${this.baseUrl}`, { params });
25
- }
26
- return this.http.get(`api/${this.baseUrl}`, { params });
27
- }
28
- /**
29
- * Add a new record to the database
30
- *
31
- * @param model The data of the model to add
32
- * @param params Query parameters
33
- * @return Observable<any>
34
- */
35
- store(model, params) {
36
- return this.http.post(`api/${this.baseUrl}`, model, { params });
37
- }
38
- /**
39
- * Load a single model record, often with all relations and related data
40
- *
41
- * @param modelId ID of the model to load
42
- * @param params Query parameters
43
- * @return Observable<any>
44
- */
45
- show(modelId, params) {
46
- return this.http.get(`api/${this.baseUrl}/${modelId}`, { params });
47
- }
48
- /**
49
- * Update fields of a single existing model
50
- *
51
- * @param model Model to update
52
- * @param params Query parameters
53
- * @return Observable<any>
54
- */
55
- update(model, params) {
56
- return this.http.put(`api/${this.baseUrl}/${model.id}`, model, { params });
57
- }
58
- /**
59
- * Delete a single model
60
- *
61
- * @param model Model to delete
62
- * @return Observable<any>
63
- */
64
- delete(model) {
65
- return this.http.delete(`api/${this.baseUrl}/${model.id}`);
66
- }
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvYmFzZS1tb2RlbC90ZWNobGlmeS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxZQUFzQixJQUFpQixFQUFFLE9BQWU7UUFBbEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUY3QixZQUFPLEdBQUcsOEJBQThCLENBQUM7UUFHakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQVksRUFBRSxPQUFpQjtRQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsS0FBVSxFQUFFLE1BQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsT0FBWSxFQUFFLE1BQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBVSxFQUFFLE1BQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEludGVyZmFjZSB1c2VkIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29uc2lzdGVudCBzdHJ1Y3R1cmUgYWNyb3NzIG91ciBsaXN0aW5nIHBhZ2VzXG4gKlxuICogQWR2YW50YWdlcyBvZiB0aGlzIGFic3RyYWN0IGNsYXNzXG4gKiAtIExlc3MgY29kZSwgbGVzcyBtYWludGVuYW5jZSwgbGVzcyBidWdzXG4gKiAtIG1vcmUgY29uc2lzdGVudCBjb2RlXG4gKiAtIGNvbW1lbnRzIG9uIG1vcmUgY29kZVxuICogLSBzYXZlIHRpbWUsIHNhdmUgZW5lcmd5XG4gKi9cbmV4cG9ydCBjbGFzcyBUZWNobGlmeVNlcnZpY2VCYXNlQ2xhc3Mge1xuXG4gIHByb3RlY3RlZCBiYXNlVXJsID0gJ3lvdS1mb3Jnb3QtdG8tc2V0LWEtYmFzZS11cmwnO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwOiBIdHRwU2VydmljZSwgYmFzZVVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHNldCBvZiB0aGUgbW9kZWwgdGhpcyBzZXJ2aWNlIGlzIGZvclxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGluZGV4KHBhcmFtcz86IGFueSwgaXNDYWNoZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChpc0NhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmNhY2hlKCkuZ2V0KGBhcGkvJHt0aGlzLmJhc2VVcmx9YCwgeyBwYXJhbXMgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGFwaS8ke3RoaXMuYmFzZVVybH1gLCB7IHBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgcmVjb3JkIHRvIHRoZSBkYXRhYmFzZVxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIGRhdGEgb2YgdGhlIG1vZGVsIHRvIGFkZFxuICAgKiBAcGFyYW0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHN0b3JlKG1vZGVsOiBhbnksIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGBhcGkvJHt0aGlzLmJhc2VVcmx9YCwgbW9kZWwsIHsgcGFyYW1zIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBzaW5nbGUgbW9kZWwgcmVjb3JkLCBvZnRlbiB3aXRoIGFsbCByZWxhdGlvbnMgYW5kIHJlbGF0ZWQgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxJZCBJRCBvZiB0aGUgbW9kZWwgdG8gbG9hZFxuICAgKiBAcGFyYW0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHJldHVybiBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHNob3cobW9kZWxJZDogYW55LCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcGkvJHt0aGlzLmJhc2VVcmx9LyR7bW9kZWxJZH1gLCB7IHBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZmllbGRzIG9mIGEgc2luZ2xlIGV4aXN0aW5nIG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCBNb2RlbCB0byB1cGRhdGVcbiAgICogQHBhcmFtIHBhcmFtcyBRdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm4gT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICB1cGRhdGUobW9kZWw6IGFueSwgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgYXBpLyR7dGhpcy5iYXNlVXJsfS8ke21vZGVsLmlkfWAsIG1vZGVsLCB7IHBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBzaW5nbGUgbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIE1vZGVsIHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJuIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgZGVsZXRlKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGBhcGkvJHt0aGlzLmJhc2VVcmx9LyR7bW9kZWwuaWR9YCk7XG4gIH1cblxuXG59XG4iXX0=