@firestitch/system 9.2.2 → 12.0.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 (149) hide show
  1. package/app/components/api-log/api-log.component.d.ts +13 -10
  2. package/app/components/api-log/index.d.ts +1 -0
  3. package/app/components/api-logs/api-logs.component.d.ts +23 -18
  4. package/app/components/api-logs/index.d.ts +1 -0
  5. package/app/components/cron/cron.component.d.ts +24 -21
  6. package/app/components/cron/index.d.ts +1 -1
  7. package/app/components/cron-log/cron-log.component.d.ts +12 -9
  8. package/app/components/cron-log/index.d.ts +1 -1
  9. package/app/components/crons/crons.component.d.ts +38 -33
  10. package/app/components/crons/index.d.ts +1 -0
  11. package/app/components/dashboard/dashboard.component.d.ts +30 -25
  12. package/app/components/dashboard/index.d.ts +1 -0
  13. package/app/components/file-manager/file-manager.component.d.ts +17 -14
  14. package/app/components/file-manager/index.d.ts +1 -0
  15. package/app/components/info/index.d.ts +1 -0
  16. package/app/components/info/info.component.d.ts +11 -8
  17. package/app/components/process/index.d.ts +1 -0
  18. package/app/components/process/process.component.d.ts +16 -13
  19. package/app/components/processes/index.d.ts +1 -0
  20. package/app/components/processes/processes.component.d.ts +36 -31
  21. package/app/components/server-log/index.d.ts +1 -0
  22. package/app/components/server-log/server-log.component.d.ts +10 -7
  23. package/app/components/server-logs/index.d.ts +1 -0
  24. package/app/components/server-logs/server-logs.component.d.ts +23 -18
  25. package/app/components/settings/index.d.ts +1 -0
  26. package/app/components/settings/settings.component.d.ts +32 -27
  27. package/app/components/upgrade-logs/index.d.ts +1 -0
  28. package/app/components/upgrade-logs/upgrade-logs.component.d.ts +20 -14
  29. package/app/consts/api-log-states.const.d.ts +5 -5
  30. package/app/consts/cron-log-states.const.d.ts +6 -6
  31. package/app/consts/cron-states.const.d.ts +5 -5
  32. package/app/consts/index.d.ts +3 -3
  33. package/app/consts/process-states.const.d.ts +5 -5
  34. package/app/enums/api-log-state.enum.d.ts +5 -5
  35. package/app/enums/cron-log-state.enum.d.ts +13 -13
  36. package/app/enums/cron-state.enum.d.ts +7 -7
  37. package/app/enums/index.d.ts +5 -5
  38. package/app/enums/process-state.enum.d.ts +8 -8
  39. package/app/enums/setting-interface-type.enum.d.ts +11 -13
  40. package/app/fs-system.module.d.ts +46 -5
  41. package/app/helpers/index-name-value.d.ts +1 -1
  42. package/app/injectors/system-config.injector.d.ts +2 -2
  43. package/app/interfaces/dashboard-action.d.ts +5 -5
  44. package/app/interfaces/index.d.ts +3 -3
  45. package/app/interfaces/process-action.d.ts +6 -6
  46. package/app/interfaces/system-config.d.ts +3 -2
  47. package/app/pipes/key-name-value.pipe.d.ts +8 -4
  48. package/app/services/index.d.ts +1 -0
  49. package/app/services/system.service.d.ts +10 -0
  50. package/bundles/firestitch-system.umd.js +1625 -1430
  51. package/bundles/firestitch-system.umd.js.map +1 -1
  52. package/esm2015/app/components/api-log/api-log.component.js +38 -31
  53. package/esm2015/app/components/api-log/index.js +2 -0
  54. package/esm2015/app/components/api-logs/api-logs.component.js +75 -73
  55. package/esm2015/app/components/api-logs/index.js +2 -0
  56. package/esm2015/app/components/cron/cron.component.js +103 -96
  57. package/esm2015/app/components/cron/index.js +2 -2
  58. package/esm2015/app/components/cron-log/cron-log.component.js +41 -33
  59. package/esm2015/app/components/cron-log/index.js +2 -2
  60. package/esm2015/app/components/crons/crons.component.js +191 -206
  61. package/esm2015/app/components/crons/index.js +2 -0
  62. package/esm2015/app/components/dashboard/dashboard.component.js +94 -93
  63. package/esm2015/app/components/dashboard/index.js +2 -0
  64. package/esm2015/app/components/file-manager/file-manager.component.js +54 -64
  65. package/esm2015/app/components/file-manager/index.js +2 -0
  66. package/esm2015/app/components/info/index.js +2 -0
  67. package/esm2015/app/components/info/info.component.js +36 -37
  68. package/esm2015/app/components/process/index.js +2 -0
  69. package/esm2015/app/components/process/process.component.js +49 -42
  70. package/esm2015/app/components/processes/index.js +2 -0
  71. package/esm2015/app/components/processes/processes.component.js +167 -178
  72. package/esm2015/app/components/server-log/index.js +2 -0
  73. package/esm2015/app/components/server-log/server-log.component.js +42 -34
  74. package/esm2015/app/components/server-logs/index.js +2 -0
  75. package/esm2015/app/components/server-logs/server-logs.component.js +60 -59
  76. package/esm2015/app/components/settings/index.js +2 -0
  77. package/esm2015/app/components/settings/settings.component.js +130 -132
  78. package/esm2015/app/components/upgrade-logs/index.js +2 -0
  79. package/esm2015/app/components/upgrade-logs/upgrade-logs.component.js +51 -47
  80. package/esm2015/app/consts/api-log-states.const.js +7 -7
  81. package/esm2015/app/consts/cron-log-states.const.js +15 -15
  82. package/esm2015/app/consts/cron-states.const.js +9 -9
  83. package/esm2015/app/consts/index.js +4 -4
  84. package/esm2015/app/consts/process-states.const.js +10 -10
  85. package/esm2015/app/enums/api-log-state.enum.js +7 -7
  86. package/esm2015/app/enums/cron-log-state.enum.js +15 -15
  87. package/esm2015/app/enums/cron-state.enum.js +9 -9
  88. package/esm2015/app/enums/index.js +6 -6
  89. package/esm2015/app/enums/process-state.enum.js +10 -10
  90. package/esm2015/app/enums/setting-interface-type.enum.js +13 -15
  91. package/esm2015/app/fs-system.module.js +183 -109
  92. package/esm2015/app/helpers/index-name-value.js +8 -8
  93. package/esm2015/app/injectors/system-config.injector.js +3 -3
  94. package/esm2015/app/interfaces/dashboard-action.js +2 -1
  95. package/esm2015/app/interfaces/index.js +4 -1
  96. package/esm2015/app/interfaces/process-action.js +2 -1
  97. package/esm2015/app/interfaces/system-config.js +2 -1
  98. package/esm2015/app/pipes/key-name-value.pipe.js +21 -17
  99. package/esm2015/app/services/index.js +2 -0
  100. package/esm2015/app/services/system.service.js +42 -0
  101. package/esm2015/firestitch-system.js +5 -20
  102. package/esm2015/public_api.js +20 -5
  103. package/fesm2015/firestitch-system.js +1234 -1179
  104. package/fesm2015/firestitch-system.js.map +1 -1
  105. package/firestitch-system.d.ts +5 -19
  106. package/package.json +5 -9
  107. package/public_api.d.ts +20 -5
  108. package/bundles/firestitch-system.umd.min.js +0 -16
  109. package/bundles/firestitch-system.umd.min.js.map +0 -1
  110. package/esm5/app/components/api-log/api-log.component.js +0 -32
  111. package/esm5/app/components/api-logs/api-logs.component.js +0 -75
  112. package/esm5/app/components/cron/cron.component.js +0 -98
  113. package/esm5/app/components/cron/index.js +0 -2
  114. package/esm5/app/components/cron-log/cron-log.component.js +0 -34
  115. package/esm5/app/components/cron-log/index.js +0 -2
  116. package/esm5/app/components/crons/crons.component.js +0 -209
  117. package/esm5/app/components/dashboard/dashboard.component.js +0 -98
  118. package/esm5/app/components/file-manager/file-manager.component.js +0 -67
  119. package/esm5/app/components/info/info.component.js +0 -41
  120. package/esm5/app/components/process/process.component.js +0 -44
  121. package/esm5/app/components/processes/processes.component.js +0 -180
  122. package/esm5/app/components/server-log/server-log.component.js +0 -35
  123. package/esm5/app/components/server-logs/server-logs.component.js +0 -61
  124. package/esm5/app/components/settings/settings.component.js +0 -136
  125. package/esm5/app/components/upgrade-logs/upgrade-logs.component.js +0 -49
  126. package/esm5/app/consts/api-log-states.const.js +0 -7
  127. package/esm5/app/consts/cron-log-states.const.js +0 -15
  128. package/esm5/app/consts/cron-states.const.js +0 -9
  129. package/esm5/app/consts/index.js +0 -4
  130. package/esm5/app/consts/process-states.const.js +0 -10
  131. package/esm5/app/enums/api-log-state.enum.js +0 -7
  132. package/esm5/app/enums/cron-log-state.enum.js +0 -15
  133. package/esm5/app/enums/cron-state.enum.js +0 -9
  134. package/esm5/app/enums/index.js +0 -6
  135. package/esm5/app/enums/process-state.enum.js +0 -10
  136. package/esm5/app/enums/setting-interface-type.enum.js +0 -15
  137. package/esm5/app/fs-system.module.js +0 -113
  138. package/esm5/app/helpers/index-name-value.js +0 -8
  139. package/esm5/app/injectors/system-config.injector.js +0 -3
  140. package/esm5/app/interfaces/dashboard-action.js +0 -1
  141. package/esm5/app/interfaces/index.js +0 -1
  142. package/esm5/app/interfaces/process-action.js +0 -1
  143. package/esm5/app/interfaces/system-config.js +0 -1
  144. package/esm5/app/pipes/key-name-value.pipe.js +0 -20
  145. package/esm5/firestitch-system.js +0 -20
  146. package/esm5/public_api.js +0 -5
  147. package/fesm5/firestitch-system.js +0 -1286
  148. package/fesm5/firestitch-system.js.map +0 -1
  149. package/firestitch-system.metadata.json +0 -1
@@ -1,33 +1,41 @@
1
- import { __decorate, __metadata, __param } from "tslib";
2
- import { Component, Inject } from '@angular/core';
3
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
- import { CronLogStates } from '../../consts/cron-log-states.const';
5
- import { indexNameValue } from '../../helpers/index-name-value';
6
- let CronLogComponent = class CronLogComponent {
7
- constructor(_data) {
8
- this._data = _data;
9
- this.CronLogStates = indexNameValue(CronLogStates);
10
- this.CronLogStateColors = {};
11
- }
12
- ngOnInit() {
13
- this.cronLog = this._data.cronLog;
14
- this.CronLogStateColors = CronLogStates
15
- .reduce((accum, cronLogState) => {
16
- accum[cronLogState.value] = cronLogState.color;
17
- return accum;
18
- }, {});
19
- }
20
- };
21
- CronLogComponent.ctorParameters = () => [
22
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
23
- ];
24
- CronLogComponent = __decorate([
25
- Component({
26
- template: "<fs-dialog *fsSkeleton=\"cronLog\">\r\n <div mat-dialog-title>Cron Log</div>\r\n <mat-dialog-content>\r\n <div class=\"row\">\r\n <fs-label-field>\r\n <fs-label>\r\n Status\r\n </fs-label>\r\n <div [ngStyle]=\"{ color: CronLogStateColors[cronLog.state]}\">\r\n {{CronLogStates[cronLog.state] || cronLog.state}}\r\n </div>\r\n </fs-label-field>\r\n\r\n <fs-label-field>\r\n <fs-label>\r\n Date\r\n </fs-label>\r\n <fs-date-ago [date]=\"cronLog.createDate\"></fs-date-ago>\r\n </fs-label-field>\r\n </div>\r\n \r\n <fs-label-field *ngIf=\"cronLog.message\">\r\n <fs-label>\r\n Message\r\n </fs-label>\r\n <div class=\"message\">\r\n {{cronLog.message}}\r\n </div>\r\n </fs-label-field>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\r\n </mat-dialog-actions>\r\n</fs-dialog>\r\n",
27
- styles: [".message{white-space:pre-line}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}"]
28
- }),
29
- __param(0, Inject(MAT_DIALOG_DATA)),
30
- __metadata("design:paramtypes", [Object])
31
- ], CronLogComponent);
32
- export { CronLogComponent };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1sb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvc3lzdGVtLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvY3Jvbi1sb2cvY3Jvbi1sb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9oRSxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtJQU0zQixZQUNtQyxLQUFLO1FBQUwsVUFBSyxHQUFMLEtBQUssQ0FBQTtRQUpqQyxrQkFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5Qyx1QkFBa0IsR0FBRyxFQUFFLENBQUM7SUFJNUIsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxhQUFhO2FBQ3RDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRTtZQUM5QixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDL0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0NBQ0YsQ0FBQTs7NENBWEksTUFBTSxTQUFDLGVBQWU7O0FBUGQsZ0JBQWdCO0lBSjVCLFNBQVMsQ0FBQztRQUNULGtnQ0FBd0M7O0tBRXpDLENBQUM7SUFRRyxXQUFBLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTs7R0FQZixnQkFBZ0IsQ0FrQjVCO1NBbEJZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ3JvbkxvZ1N0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cy9jcm9uLWxvZy1zdGF0ZXMuY29uc3QnO1xyXG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nyb24tbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcm9uLWxvZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcm9uTG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIGNyb25Mb2c7XHJcbiAgcHVibGljIENyb25Mb2dTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShDcm9uTG9nU3RhdGVzKTtcclxuICBwdWJsaWMgQ3JvbkxvZ1N0YXRlQ29sb3JzID0ge307XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JvbkxvZyA9IHRoaXMuX2RhdGEuY3JvbkxvZztcclxuICAgIHRoaXMuQ3JvbkxvZ1N0YXRlQ29sb3JzID0gQ3JvbkxvZ1N0YXRlc1xyXG4gICAgLnJlZHVjZSgoYWNjdW0sIGNyb25Mb2dTdGF0ZSkgPT4ge1xyXG4gICAgICBhY2N1bVtjcm9uTG9nU3RhdGUudmFsdWVdID0gY3JvbkxvZ1N0YXRlLmNvbG9yO1xyXG4gICAgICByZXR1cm4gYWNjdW07XHJcbiAgICB9LCB7fSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import { CronLogStates } from '../../consts/cron-log-states.const';
4
+ import { indexNameValue } from '../../helpers/index-name-value';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@firestitch/dialog";
7
+ import * as i2 from "@firestitch/label";
8
+ import * as i3 from "@firestitch/date";
9
+ import * as i4 from "@angular/material/button";
10
+ import * as i5 from "@firestitch/skeleton";
11
+ import * as i6 from "@angular/material/dialog";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "@angular/flex-layout/extended";
14
+ export class CronLogComponent {
15
+ constructor(_data) {
16
+ this._data = _data;
17
+ this.CronLogStates = indexNameValue(CronLogStates);
18
+ this.CronLogStateColors = {};
19
+ }
20
+ ngOnInit() {
21
+ this.cronLog = this._data.cronLog;
22
+ this.CronLogStateColors = CronLogStates
23
+ .reduce((accum, cronLogState) => {
24
+ accum[cronLogState.value] = cronLogState.color;
25
+ return accum;
26
+ }, {});
27
+ }
28
+ }
29
+ CronLogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronLogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
30
+ CronLogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronLogComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"cronLog\">\n <div mat-dialog-title>Cron Log</div>\n <mat-dialog-content>\n <div class=\"row\">\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div [ngStyle]=\"{ color: CronLogStateColors[cronLog.state]}\">\n {{CronLogStates[cronLog.state] || cronLog.state}}\n </div>\n </fs-label-field>\n\n <fs-label-field>\n <fs-label>\n Date\n </fs-label>\n <fs-date-ago [date]=\"cronLog.createDate\"></fs-date-ago>\n </fs-label-field>\n </div>\n \n <fs-label-field *ngIf=\"cronLog.message\">\n <fs-label>\n Message\n </fs-label>\n <div class=\"message\">\n {{cronLog.message}}\n </div>\n </fs-label-field>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">Done</button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [".message{white-space:pre-line}.row{display:flex;flex-wrap:wrap}.row fs-label-field:not(:last-child){margin-right:40px}\n"], components: [{ type: i1.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2.FsLabelComponent, selector: "fs-label" }, { type: i3.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i5.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronLogComponent, decorators: [{
32
+ type: Component,
33
+ args: [{
34
+ templateUrl: './cron-log.component.html',
35
+ styleUrls: ['./cron-log.component.scss']
36
+ }]
37
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
38
+ type: Inject,
39
+ args: [MAT_DIALOG_DATA]
40
+ }] }]; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1sb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Nyb24tbG9nL2Nyb24tbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jcm9uLWxvZy9jcm9uLWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7OztBQU9oRSxNQUFNLE9BQU8sZ0JBQWdCO0lBTTNCLFlBQ21DLEtBQUs7UUFBTCxVQUFLLEdBQUwsS0FBSyxDQUFBO1FBSmpDLGtCQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUk1QixDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWE7YUFDdEMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQzlCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMvQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7OzhHQWpCVSxnQkFBZ0Isa0JBT2pCLGVBQWU7a0dBUGQsZ0JBQWdCLG9EQ1Y3QixvN0JBa0NBOzRGRHhCYSxnQkFBZ0I7a0JBSjVCLFNBQVM7bUJBQUM7b0JBQ1QsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3pDOzswQkFRSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ3JvbkxvZ1N0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cy9jcm9uLWxvZy1zdGF0ZXMuY29uc3QnO1xuaW1wb3J0IHsgaW5kZXhOYW1lVmFsdWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luZGV4LW5hbWUtdmFsdWUnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY3Jvbi1sb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcm9uLWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENyb25Mb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBjcm9uTG9nO1xuICBwdWJsaWMgQ3JvbkxvZ1N0YXRlcyA9IGluZGV4TmFtZVZhbHVlKENyb25Mb2dTdGF0ZXMpO1xuICBwdWJsaWMgQ3JvbkxvZ1N0YXRlQ29sb3JzID0ge307XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBfZGF0YSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyb25Mb2cgPSB0aGlzLl9kYXRhLmNyb25Mb2c7XG4gICAgdGhpcy5Dcm9uTG9nU3RhdGVDb2xvcnMgPSBDcm9uTG9nU3RhdGVzXG4gICAgLnJlZHVjZSgoYWNjdW0sIGNyb25Mb2dTdGF0ZSkgPT4ge1xuICAgICAgYWNjdW1bY3JvbkxvZ1N0YXRlLnZhbHVlXSA9IGNyb25Mb2dTdGF0ZS5jb2xvcjtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCB7fSk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2cgKmZzU2tlbGV0b249XCJjcm9uTG9nXCI+XG4gIDxkaXYgbWF0LWRpYWxvZy10aXRsZT5Dcm9uIExvZzwvZGl2PlxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIFN0YXR1c1xuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgY29sb3I6IENyb25Mb2dTdGF0ZUNvbG9yc1tjcm9uTG9nLnN0YXRlXX1cIj5cbiAgICAgICAgICB7e0Nyb25Mb2dTdGF0ZXNbY3JvbkxvZy5zdGF0ZV0gfHwgY3JvbkxvZy5zdGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgRGF0ZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICA8ZnMtZGF0ZS1hZ28gW2RhdGVdPVwiY3JvbkxvZy5jcmVhdGVEYXRlXCI+PC9mcy1kYXRlLWFnbz5cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cImNyb25Mb2cubWVzc2FnZVwiPlxuICAgICAgPGZzLWxhYmVsPlxuICAgICAgICBNZXNzYWdlXG4gICAgICA8L2ZzLWxhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5cbiAgICAgICAge3tjcm9uTG9nLm1lc3NhZ2V9fVxuICAgICAgPC9kaXY+XG4gICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjb2xvcj1cInByaW1hcnlcIj5Eb25lPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './cron-log.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9zeXN0ZW0vIiwic291cmNlcyI6WyJhcHAvY29tcG9uZW50cy9jcm9uLWxvZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcm9uLWxvZy5jb21wb25lbnQnO1xyXG4iXX0=
1
+ export * from './cron-log.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY3Jvbi1sb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3Jvbi1sb2cuY29tcG9uZW50JztcbiJdfQ==
@@ -1,206 +1,191 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, ViewChild, Input } from '@angular/core';
3
- import { MatDialog } from '@angular/material/dialog';
4
- import { FsMessage } from '@firestitch/message';
5
- import { ItemType } from '@firestitch/filter';
6
- import { FsListComponent } from '@firestitch/list';
7
- import { map, tap } from 'rxjs/operators';
8
- import { indexNameValue } from '../../helpers/index-name-value';
9
- import { CronComponent } from '../cron/cron.component';
10
- import { CronStates } from '../../consts';
11
- import { CronState } from '../../enums';
12
- import { SelectionActionType } from '@firestitch/selection';
13
- let CronsComponent = class CronsComponent {
14
- constructor(_message, _dialog) {
15
- this._message = _message;
16
- this._dialog = _dialog;
17
- this.config = null;
18
- this.cronStates = indexNameValue(CronStates);
19
- }
20
- ngOnInit() {
21
- this._configList();
22
- }
23
- _configList() {
24
- this.config = {
25
- paging: false,
26
- filters: [
27
- {
28
- type: ItemType.Keyword,
29
- name: 'keyword',
30
- label: 'Search'
31
- }
32
- ],
33
- rowActions: this.getCronActions()
34
- .map((rowAction) => {
35
- return Object.assign(Object.assign({}, rowAction), { click: (cron) => {
36
- rowAction.action(cron)
37
- .subscribe();
38
- } });
39
- }),
40
- fetch: query => {
41
- query.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
42
- return this.loadCrons(query)
43
- .pipe(map((response) => ({ data: response })));
44
- },
45
- };
46
- if (this.bulk) {
47
- this.config.selection = {
48
- selectAll: false,
49
- actions: [
50
- {
51
- type: SelectionActionType.Action,
52
- name: 'disable',
53
- label: 'Disable'
54
- },
55
- {
56
- type: SelectionActionType.Action,
57
- name: 'enable',
58
- label: 'Enable'
59
- },
60
- ],
61
- actionSelected: (action) => {
62
- return this.bulk(action.action.name, action.selected)
63
- .pipe(tap(() => {
64
- this.list.reload();
65
- this._message.success('Applied Changes');
66
- }));
67
- },
68
- };
69
- }
70
- }
71
- open(cron) {
72
- this._dialog.open(CronComponent, {
73
- data: {
74
- cron,
75
- loadCronLogs: this.loadCronLogs,
76
- loadCron: this.loadCron,
77
- cronActions: this.getCronActions(),
78
- },
79
- width: '85%'
80
- });
81
- }
82
- getCronActions() {
83
- return [
84
- {
85
- action: (data) => {
86
- return this.queue(data)
87
- .pipe(tap(() => {
88
- this._message.success('Queued cron');
89
- this.list.reload();
90
- }));
91
- },
92
- label: 'Queue',
93
- show: (cron) => {
94
- return cron.state === CronState.Idle || cron.state === CronState.Failed;
95
- },
96
- },
97
- {
98
- action: (data) => {
99
- return this.run(data)
100
- .pipe(tap(() => {
101
- this._message.success('Cron ran');
102
- this.list.reload();
103
- }));
104
- },
105
- label: 'Run',
106
- show: (cron) => {
107
- return cron.state === CronState.Idle || cron.state === CronState.Failed;
108
- },
109
- },
110
- {
111
- action: (data) => {
112
- return this.enable(data)
113
- .pipe(tap(() => {
114
- this._message.success('Enabled cron');
115
- this.list.reload();
116
- }));
117
- },
118
- label: 'Enable',
119
- show: (cron) => {
120
- return cron.state === CronState.Disabled;
121
- },
122
- },
123
- {
124
- action: (data) => {
125
- return this.disable(data)
126
- .pipe(tap(() => {
127
- this._message.success('Disabled cron');
128
- this.list.reload();
129
- }));
130
- },
131
- label: 'Disable',
132
- show: (cron) => {
133
- return cron.state === CronState.Idle || cron.state === CronState.Failed;
134
- },
135
- },
136
- {
137
- action: (data) => {
138
- return this.kill(data)
139
- .pipe(tap(() => {
140
- this._message.success('Killed cron');
141
- this.list.reload();
142
- }));
143
- },
144
- label: 'Kill',
145
- show: (cron) => {
146
- return cron.state === CronState.Running;
147
- },
148
- },
149
- ];
150
- }
151
- };
152
- CronsComponent.ctorParameters = () => [
153
- { type: FsMessage },
154
- { type: MatDialog }
155
- ];
156
- __decorate([
157
- ViewChild(FsListComponent, { static: true }),
158
- __metadata("design:type", FsListComponent)
159
- ], CronsComponent.prototype, "list", void 0);
160
- __decorate([
161
- Input(),
162
- __metadata("design:type", Function)
163
- ], CronsComponent.prototype, "enable", void 0);
164
- __decorate([
165
- Input(),
166
- __metadata("design:type", Function)
167
- ], CronsComponent.prototype, "disable", void 0);
168
- __decorate([
169
- Input(),
170
- __metadata("design:type", Function)
171
- ], CronsComponent.prototype, "kill", void 0);
172
- __decorate([
173
- Input(),
174
- __metadata("design:type", Function)
175
- ], CronsComponent.prototype, "queue", void 0);
176
- __decorate([
177
- Input(),
178
- __metadata("design:type", Function)
179
- ], CronsComponent.prototype, "run", void 0);
180
- __decorate([
181
- Input(),
182
- __metadata("design:type", Function)
183
- ], CronsComponent.prototype, "loadCrons", void 0);
184
- __decorate([
185
- Input(),
186
- __metadata("design:type", Function)
187
- ], CronsComponent.prototype, "loadCron", void 0);
188
- __decorate([
189
- Input(),
190
- __metadata("design:type", Function)
191
- ], CronsComponent.prototype, "loadCronLogs", void 0);
192
- __decorate([
193
- Input(),
194
- __metadata("design:type", Function)
195
- ], CronsComponent.prototype, "bulk", void 0);
196
- CronsComponent = __decorate([
197
- Component({
198
- selector: 'fs-system-crons',
199
- template: "<fs-list [config]=\"config\">\r\n <fs-list-column>\r\n <ng-template fs-list-header>Name</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <a (click)=\"open(row)\">{{row.name}}</a>\r\n <div *ngIf=\"row.cronSetting\">\r\n <small>{{row.cronSetting.summary}}</small>\r\n </div>\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Status</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{cronStates[row.state]}}\r\n </ng-template>\r\n </fs-list-column>\r\n <fs-list-column>\r\n <ng-template fs-list-header>Last Ran</ng-template>\r\n <ng-template fs-list-cell let-row=\"row\">\r\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\r\n Never\r\n </ng-container>\r\n <ng-template #lastRan>\r\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\r\n <div><small *ngIf=\"row.duration\">Duration: {{ row.duration | fsDateDuration }}</small></div>\r\n </ng-template>\r\n </ng-template>\r\n </fs-list-column>\r\n</fs-list>\r\n",
200
- styles: [""]
201
- }),
202
- __metadata("design:paramtypes", [FsMessage,
203
- MatDialog])
204
- ], CronsComponent);
205
- export { CronsComponent };
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvc3lzdGVtLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvY3JvbnMvY3JvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFnQixlQUFlLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFFdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVE1RCxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBaUJ6QixZQUNVLFFBQW1CLEVBQ25CLE9BQWtCO1FBRGxCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUxyQixXQUFNLEdBQWlCLElBQUksQ0FBQztRQUM1QixlQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBSzNDLENBQUM7SUFFRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENB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RUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OEJBQU8sZUFBZTs0Q0FBQztBQUUzRDtJQUFSLEtBQUssRUFBRTs7OENBQStDO0FBQzlDO0lBQVIsS0FBSyxFQUFFOzsrQ0FBZ0Q7QUFDL0M7SUFBUixLQUFLLEVBQUU7OzRDQUE2QztBQUM1QztJQUFSLEtBQUssRUFBRTs7NkNBQThDO0FBQzdDO0lBQVIsS0FBSyxFQUFFOzsyQ0FBNEM7QUFDM0M7SUFBUixLQUFLLEVBQUU7O2lEQUFvRDtBQUNuRDtJQUFSLEtBQUssRUFBRTs7Z0RBQWlEO0FBQ2hEO0lBQVIsS0FBSyxFQUFFOztvREFBOEU7QUFDN0U7SUFBUixLQUFLLEVBQUU7OzRDQUFtRTtBQVpoRSxjQUFjO0lBTDFCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxpQkFBaUI7UUFDM0Isd2xDQUFxQzs7S0FFdEMsQ0FBQztxQ0FtQm9CLFNBQVM7UUFDVixTQUFTO0dBbkJqQixjQUFjLENBOEsxQjtTQTlLWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XHJcbmltcG9ydCB7IEZzTGlzdENvbmZpZywgRnNMaXN0Q29tcG9uZW50LCBGc0xpc3RBY3Rpb25TZWxlY3RlZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xyXG5cclxuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcclxuaW1wb3J0IHsgQ3JvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nyb24vY3Jvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcm9uU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgQ3JvblN0YXRlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25BY3Rpb25UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1jcm9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nyb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcm9ucy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbGlzdDogRnNMaXN0Q29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGU6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMga2lsbDogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBxdWV1ZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBydW46IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb25zOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb246IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb25Mb2dzOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPHsgZGF0YTogYW55W10sIHBhZ2luZzogYW55IH0+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBidWxrOiAoYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBwdWJsaWMgY29uZmlnOiBGc0xpc3RDb25maWcgPSBudWxsO1xyXG4gIHB1YmxpYyBjcm9uU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoQ3JvblN0YXRlcyk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29uZmlnTGlzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0ge1xyXG4gICAgICBwYWdpbmc6IGZhbHNlLFxyXG4gICAgICBmaWx0ZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuS2V5d29yZCxcclxuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcclxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJ1xyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgcm93QWN0aW9uczogdGhpcy5nZXRDcm9uQWN0aW9ucygpXHJcbiAgICAgIC5tYXAoKHJvd0FjdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yb3dBY3Rpb24sXHJcbiAgICAgICAgICBjbGljazogKGNyb24pID0+IHtcclxuICAgICAgICAgICAgcm93QWN0aW9uLmFjdGlvbihjcm9uKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGZldGNoOiBxdWVyeSA9PiB7XHJcbiAgICAgICAgcXVlcnkudGltZXpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZENyb25zKHF1ZXJ5KVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+ICh7IGRhdGE6IHJlc3BvbnNlIH0pKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSwgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmKHRoaXMuYnVsaykge1xyXG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24gPSB7XHJcbiAgICAgICAgc2VsZWN0QWxsOiBmYWxzZSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxyXG4gICAgICAgICAgICBuYW1lOiAnZGlzYWJsZScsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnRGlzYWJsZSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxyXG4gICAgICAgICAgICBuYW1lOiAnZW5hYmxlJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdFbmFibGUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgYWN0aW9uU2VsZWN0ZWQ6IChhY3Rpb246IEZzTGlzdEFjdGlvblNlbGVjdGVkKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5idWxrKGFjdGlvbi5hY3Rpb24ubmFtZSwgYWN0aW9uLnNlbGVjdGVkKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQXBwbGllZCBDaGFuZ2VzJyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oY3Jvbikge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oQ3JvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7IFxyXG4gICAgICAgIGNyb24sXHJcbiAgICAgICAgbG9hZENyb25Mb2dzOiB0aGlzLmxvYWRDcm9uTG9ncyxcclxuICAgICAgICBsb2FkQ3JvbjogdGhpcy5sb2FkQ3JvbixcclxuICAgICAgICBjcm9uQWN0aW9uczogdGhpcy5nZXRDcm9uQWN0aW9ucygpLFxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogJzg1JSdcclxuICAgIH0pO1xyXG4gIH0gIFxyXG5cclxuICBwdWJsaWMgZ2V0Q3JvbkFjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMucXVldWUoZGF0YSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUXVldWVkIGNyb24nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnUXVldWUnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMucnVuKGRhdGEpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Nyb24gcmFuJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnUnVuJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5JZGxlIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVuYWJsZShkYXRhKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdFbmFibGVkIGNyb24nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5EaXNhYmxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZShkYXRhKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdEaXNhYmxlZCBjcm9uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbDogJ0Rpc2FibGUnLFxyXG4gICAgICAgIHNob3c6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLklkbGUgfHwgY3Jvbi5zdGF0ZSA9PT0gQ3JvblN0YXRlLkZhaWxlZDtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgYWN0aW9uOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMua2lsbChkYXRhKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdLaWxsZWQgY3JvbicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdLaWxsJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdOyAgICBcclxuICB9XHJcbn1cclxuIl19
1
+ import { Component, ViewChild, Input } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { FsMessage } from '@firestitch/message';
4
+ import { ItemType } from '@firestitch/filter';
5
+ import { FsListComponent } from '@firestitch/list';
6
+ import { map, tap } from 'rxjs/operators';
7
+ import { SystemService } from './../../services';
8
+ import { indexNameValue } from '../../helpers/index-name-value';
9
+ import { CronComponent } from '../cron/cron.component';
10
+ import { CronStates } from '../../consts';
11
+ import { CronState } from '../../enums';
12
+ import { SelectionActionType } from '@firestitch/selection';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@firestitch/message";
15
+ import * as i2 from "./../../services";
16
+ import * as i3 from "@angular/material/dialog";
17
+ import * as i4 from "@firestitch/list";
18
+ import * as i5 from "@firestitch/date";
19
+ import * as i6 from "@angular/common";
20
+ export class CronsComponent {
21
+ constructor(_message, _systemService, _dialog) {
22
+ this._message = _message;
23
+ this._systemService = _systemService;
24
+ this._dialog = _dialog;
25
+ this.config = null;
26
+ this.cronStates = indexNameValue(CronStates);
27
+ }
28
+ ngOnInit() {
29
+ this._configList();
30
+ }
31
+ _configList() {
32
+ this.config = {
33
+ paging: false,
34
+ filters: [
35
+ {
36
+ type: ItemType.Keyword,
37
+ name: 'keyword',
38
+ label: 'Search'
39
+ }
40
+ ],
41
+ rowActions: this.getCronActions()
42
+ .map((rowAction) => {
43
+ return Object.assign(Object.assign({}, rowAction), { click: (cron) => {
44
+ rowAction.action(cron)
45
+ .subscribe();
46
+ } });
47
+ }),
48
+ fetch: query => {
49
+ query.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
50
+ return this.loadCrons(query)
51
+ .pipe(map((response) => ({ data: this._systemService.input(response) })));
52
+ },
53
+ };
54
+ if (this.bulk) {
55
+ this.config.selection = {
56
+ selectAll: false,
57
+ actions: [
58
+ {
59
+ type: SelectionActionType.Action,
60
+ name: 'disable',
61
+ label: 'Disable'
62
+ },
63
+ {
64
+ type: SelectionActionType.Action,
65
+ name: 'enable',
66
+ label: 'Enable'
67
+ },
68
+ ],
69
+ actionSelected: (action) => {
70
+ return this.bulk(action.action.name, action.selected)
71
+ .pipe(tap(() => {
72
+ this.list.reload();
73
+ this._message.success('Applied Changes');
74
+ }));
75
+ },
76
+ };
77
+ }
78
+ }
79
+ open(cron) {
80
+ this._dialog.open(CronComponent, {
81
+ data: {
82
+ cron,
83
+ loadCronLogs: this.loadCronLogs,
84
+ loadCron: this.loadCron,
85
+ cronActions: this.getCronActions(),
86
+ },
87
+ width: '85%'
88
+ });
89
+ }
90
+ getCronActions() {
91
+ return [
92
+ {
93
+ action: (data) => {
94
+ return this.queue(this._systemService.output(data))
95
+ .pipe(tap(() => {
96
+ this._message.success('Queued cron');
97
+ this.list.reload();
98
+ }));
99
+ },
100
+ label: 'Queue',
101
+ show: (cron) => {
102
+ return cron.state === CronState.Idle || cron.state === CronState.Failed;
103
+ },
104
+ },
105
+ {
106
+ action: (data) => {
107
+ return this.run(this._systemService.output(data))
108
+ .pipe(tap(() => {
109
+ this._message.success('Cron ran');
110
+ this.list.reload();
111
+ }));
112
+ },
113
+ label: 'Run',
114
+ show: (cron) => {
115
+ return cron.state === CronState.Idle || cron.state === CronState.Failed;
116
+ },
117
+ },
118
+ {
119
+ action: (data) => {
120
+ return this.enable(this._systemService.output(data))
121
+ .pipe(tap(() => {
122
+ this._message.success('Enabled cron');
123
+ this.list.reload();
124
+ }));
125
+ },
126
+ label: 'Enable',
127
+ show: (cron) => {
128
+ return cron.state === CronState.Disabled;
129
+ },
130
+ },
131
+ {
132
+ action: (data) => {
133
+ return this.disable(this._systemService.output(data))
134
+ .pipe(tap(() => {
135
+ this._message.success('Disabled cron');
136
+ this.list.reload();
137
+ }));
138
+ },
139
+ label: 'Disable',
140
+ show: (cron) => {
141
+ return cron.state === CronState.Idle || cron.state === CronState.Failed;
142
+ },
143
+ },
144
+ {
145
+ action: (data) => {
146
+ return this.kill(this._systemService.output(data))
147
+ .pipe(tap(() => {
148
+ this._message.success('Killed cron');
149
+ this.list.reload();
150
+ }));
151
+ },
152
+ label: 'Kill',
153
+ show: (cron) => {
154
+ return cron.state === CronState.Running;
155
+ },
156
+ },
157
+ ];
158
+ }
159
+ }
160
+ CronsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronsComponent, deps: [{ token: i1.FsMessage }, { token: i2.SystemService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
161
+ CronsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CronsComponent, selector: "fs-system-crons", inputs: { enable: "enable", disable: "disable", kill: "kill", queue: "queue", run: "run", loadCrons: "loadCrons", loadCron: "loadCron", loadCronLogs: "loadCronLogs", bulk: "bulk" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<fs-list [config]=\"config\">\n <fs-list-column>\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n <div *ngIf=\"row.cronSetting\">\n <small>{{row.cronSetting.summary}}</small>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Status</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{cronStates[row.state]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Last Ran</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.duration===null; else lastRan\">\n Never\n </ng-container>\n <ng-template #lastRan>\n <fs-date-ago [date]=\"row.createDate\"></fs-date-ago>\n <div><small *ngIf=\"row.duration\">Duration: {{ row.duration | fsDateDuration }}</small></div>\n </ng-template>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""], components: [{ type: i4.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5.FsDateAgoComponent, selector: "fs-date-ago", inputs: ["date", "showTime", "format", "showTooltip", "tooltipDateFormat"] }], directives: [{ type: i4.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i4.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i4.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateDuration": i5.FsDateDurationPipe } });
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CronsComponent, decorators: [{
163
+ type: Component,
164
+ args: [{
165
+ selector: 'fs-system-crons',
166
+ templateUrl: './crons.component.html',
167
+ styleUrls: ['./crons.component.scss'],
168
+ }]
169
+ }], ctorParameters: function () { return [{ type: i1.FsMessage }, { type: i2.SystemService }, { type: i3.MatDialog }]; }, propDecorators: { list: [{
170
+ type: ViewChild,
171
+ args: [FsListComponent, { static: true }]
172
+ }], enable: [{
173
+ type: Input
174
+ }], disable: [{
175
+ type: Input
176
+ }], kill: [{
177
+ type: Input
178
+ }], queue: [{
179
+ type: Input
180
+ }], run: [{
181
+ type: Input
182
+ }], loadCrons: [{
183
+ type: Input
184
+ }], loadCron: [{
185
+ type: Input
186
+ }], loadCronLogs: [{
187
+ type: Input
188
+ }], bulk: [{
189
+ type: Input
190
+ }] } });
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Nyb25zL2Nyb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jcm9ucy9jcm9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFnQixlQUFlLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFFdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0FBUTVELE1BQU0sT0FBTyxjQUFjO0lBaUJ6QixZQUNVLFFBQW1CLEVBQ25CLGNBQTZCLEVBQzdCLE9BQWtCO1FBRmxCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsWUFBTyxHQUFQLE9B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RTt3QkFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDSixDQUFDO2dCQUNELEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUMxQyxDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7NEdBOUtVLGNBQWM7Z0dBQWQsY0FBYyxtUkFFZCxlQUFlLDhEQ3pCNUIsb2hDQTZCQTs0RkROYSxjQUFjO2tCQUwxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN0QztvSkFHK0MsSUFBSTtzQkFBakQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU1QixNQUFNO3NCQUFyQixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLEdBQUc7c0JBQWxCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcclxuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xyXG5pbXBvcnQgeyBGc0xpc3RDb25maWcsIEZzTGlzdENvbXBvbmVudCwgRnNMaXN0QWN0aW9uU2VsZWN0ZWQgfSBmcm9tICdAZmlyZXN0aXRjaC9saXN0JztcclxuXHJcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pbmRleC1uYW1lLXZhbHVlJztcclxuaW1wb3J0IHsgQ3JvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nyb24vY3Jvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcm9uU3RhdGVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgQ3JvblN0YXRlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25BY3Rpb25UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZzLXN5c3RlbS1jcm9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nyb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcm9ucy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbGlzdDogRnNMaXN0Q29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGU6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMga2lsbDogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBxdWV1ZTogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBydW46IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb25zOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb246IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9hZENyb25Mb2dzOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPHsgZGF0YTogYW55W10sIHBhZ2luZzogYW55IH0+O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBidWxrOiAoYWN0aW9uTmFtZTogc3RyaW5nLCBkYXRhOiBhbnlbXSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBwdWJsaWMgY29uZmlnOiBGc0xpc3RDb25maWcgPSBudWxsO1xyXG4gIHB1YmxpYyBjcm9uU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoQ3JvblN0YXRlcyk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxyXG4gICAgcHJpdmF0ZSBfc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbmZpZ0xpc3QoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZ0xpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHtcclxuICAgICAgcGFnaW5nOiBmYWxzZSxcclxuICAgICAgZmlsdGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLktleXdvcmQsXHJcbiAgICAgICAgICBuYW1lOiAna2V5d29yZCcsXHJcbiAgICAgICAgICBsYWJlbDogJ1NlYXJjaCdcclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICAgIHJvd0FjdGlvbnM6IHRoaXMuZ2V0Q3JvbkFjdGlvbnMoKVxyXG4gICAgICAubWFwKChyb3dBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucm93QWN0aW9uLFxyXG4gICAgICAgICAgY2xpY2s6IChjcm9uKSA9PiB7XHJcbiAgICAgICAgICAgIHJvd0FjdGlvbi5hY3Rpb24oY3JvbilcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBmZXRjaDogcXVlcnkgPT4ge1xyXG4gICAgICAgIHF1ZXJ5LnRpbWV6b25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRDcm9ucyhxdWVyeSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiAoeyBkYXRhOiB0aGlzLl9zeXN0ZW1TZXJ2aWNlLmlucHV0KHJlc3BvbnNlKSB9KSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0sICAgIFxyXG4gICAgfTtcclxuXHJcbiAgICBpZih0aGlzLmJ1bGspIHtcclxuICAgICAgdGhpcy5jb25maWcuc2VsZWN0aW9uID0ge1xyXG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXHJcbiAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcclxuICAgICAgICAgICAgbmFtZTogJ2Rpc2FibGUnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0Rpc2FibGUnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcclxuICAgICAgICAgICAgbmFtZTogJ2VuYWJsZScsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnRW5hYmxlJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIGFjdGlvblNlbGVjdGVkOiAoYWN0aW9uOiBGc0xpc3RBY3Rpb25TZWxlY3RlZCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYnVsayhhY3Rpb24uYWN0aW9uLm5hbWUsIGFjdGlvbi5zZWxlY3RlZClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0FwcGxpZWQgQ2hhbmdlcycpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuKGNyb24pIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKENyb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogeyBcclxuICAgICAgICBjcm9uLFxyXG4gICAgICAgIGxvYWRDcm9uTG9nczogdGhpcy5sb2FkQ3JvbkxvZ3MsXHJcbiAgICAgICAgbG9hZENyb246IHRoaXMubG9hZENyb24sXHJcbiAgICAgICAgY3JvbkFjdGlvbnM6IHRoaXMuZ2V0Q3JvbkFjdGlvbnMoKSxcclxuICAgICAgfSxcclxuICAgICAgd2lkdGg6ICc4NSUnXHJcbiAgICB9KTtcclxuICB9ICBcclxuXHJcbiAgcHVibGljIGdldENyb25BY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnF1ZXVlKHRoaXMuX3N5c3RlbVNlcnZpY2Uub3V0cHV0KGRhdGEpKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdRdWV1ZWQgY3JvbicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdRdWV1ZScsXHJcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5ydW4odGhpcy5fc3lzdGVtU2VydmljZS5vdXRwdXQoZGF0YSkpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Nyb24gcmFuJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnUnVuJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5JZGxlIHx8IGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5GYWlsZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVuYWJsZSh0aGlzLl9zeXN0ZW1TZXJ2aWNlLm91dHB1dChkYXRhKSlcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnRW5hYmxlZCBjcm9uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBsYWJlbDogJ0VuYWJsZScsXHJcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRGlzYWJsZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGFjdGlvbjogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGUodGhpcy5fc3lzdGVtU2VydmljZS5vdXRwdXQoZGF0YSkpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0Rpc2FibGVkIGNyb24nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxhYmVsOiAnRGlzYWJsZScsXHJcbiAgICAgICAgc2hvdzogKGNyb24pID0+IHtcclxuICAgICAgICAgIHJldHVybiBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuSWRsZSB8fCBjcm9uLnN0YXRlID09PSBDcm9uU3RhdGUuRmFpbGVkO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBhY3Rpb246IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5raWxsKHRoaXMuX3N5c3RlbVNlcnZpY2Uub3V0cHV0KGRhdGEpKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdLaWxsZWQgY3JvbicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6ICdLaWxsJyxcclxuICAgICAgICBzaG93OiAoY3JvbikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNyb24uc3RhdGUgPT09IENyb25TdGF0ZS5SdW5uaW5nO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdOyAgICBcclxuICB9XHJcbn1cclxuIiwiPGZzLWxpc3QgW2NvbmZpZ109XCJjb25maWdcIj5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5OYW1lPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxhIChjbGljayk9XCJvcGVuKHJvdylcIj57e3Jvdy5uYW1lfX08L2E+XG4gICAgICA8ZGl2ICpuZ0lmPVwicm93LmNyb25TZXR0aW5nXCI+XG4gICAgICAgIDxzbWFsbD57e3Jvdy5jcm9uU2V0dGluZy5zdW1tYXJ5fX08L3NtYWxsPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbiAgPGZzLWxpc3QtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWhlYWRlcj5TdGF0dXM8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAge3tjcm9uU3RhdGVzW3Jvdy5zdGF0ZV19fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1oZWFkZXI+TGFzdCBSYW48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5kdXJhdGlvbj09PW51bGw7IGVsc2UgbGFzdFJhblwiPlxuICAgICAgICBOZXZlclxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2xhc3RSYW4+XG4gICAgICAgIDxmcy1kYXRlLWFnbyBbZGF0ZV09XCJyb3cuY3JlYXRlRGF0ZVwiPjwvZnMtZGF0ZS1hZ28+XG4gICAgICAgIDxkaXY+PHNtYWxsICpuZ0lmPVwicm93LmR1cmF0aW9uXCI+RHVyYXRpb246IHt7IHJvdy5kdXJhdGlvbiB8IGZzRGF0ZUR1cmF0aW9uIH19PC9zbWFsbD48L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './crons.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY3JvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JvbnMuY29tcG9uZW50JztcbiJdfQ==