@resolveio/client-lib-core 15.1.18 → 15.2.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.
- package/fesm2020/resolveio-client-lib-core.min.mjs +1 -0
- package/index.d.ts +0 -3
- package/package.json +1 -1
- package/esm2020/lib/account-manager.service.mjs +0 -222
- package/esm2020/lib/auth/auth-guard.service.mjs +0 -165
- package/esm2020/lib/auth/auth-permissions.service.mjs +0 -24
- package/esm2020/lib/auth/auth.service.mjs +0 -244
- package/esm2020/lib/auth/auth365.component.mjs +0 -44
- package/esm2020/lib/auth/can-deactivate-guard.service.mjs +0 -13
- package/esm2020/lib/auth/enroll.component.mjs +0 -81
- package/esm2020/lib/auth/forgot-password.component.mjs +0 -82
- package/esm2020/lib/core.component.mjs +0 -400
- package/esm2020/lib/core.module.mjs +0 -184
- package/esm2020/lib/core.service.mjs +0 -89
- package/esm2020/lib/directive/focus.mjs +0 -22
- package/esm2020/lib/directive/scroll.mjs +0 -55
- package/esm2020/lib/home/home.component.mjs +0 -77
- package/esm2020/lib/logger/logger.component.mjs +0 -220
- package/esm2020/lib/models/app-status.model.mjs +0 -2
- package/esm2020/lib/models/collection-document.model.mjs +0 -2
- package/esm2020/lib/models/cron-job.model.mjs +0 -2
- package/esm2020/lib/models/dialog.model.mjs +0 -2
- package/esm2020/lib/models/file.model.mjs +0 -2
- package/esm2020/lib/models/log-method-latency.model.mjs +0 -2
- package/esm2020/lib/models/navbar-main-tab.model.mjs +0 -2
- package/esm2020/lib/models/pagination.model.mjs +0 -2
- package/esm2020/lib/models/permission.model.mjs +0 -2
- package/esm2020/lib/models/select-data-label.model.mjs +0 -2
- package/esm2020/lib/models/subscription.model.mjs +0 -2
- package/esm2020/lib/models/support-ticket.model.mjs +0 -2
- package/esm2020/lib/models/user-group.model.mjs +0 -2
- package/esm2020/lib/models/user.model.mjs +0 -2
- package/esm2020/lib/offline-db.mjs +0 -519
- package/esm2020/lib/offline-manager.service.mjs +0 -107
- package/esm2020/lib/pipes/domsanitizor.pipe.mjs +0 -28
- package/esm2020/lib/pipes/filter.pipe.mjs +0 -36
- package/esm2020/lib/pipes/json-parse.pipe.mjs +0 -29
- package/esm2020/lib/pipes/minus-currency.pipe.mjs +0 -16
- package/esm2020/lib/pipes/phone.pipe.mjs +0 -47
- package/esm2020/lib/pipes/pipe.module.mjs +0 -54
- package/esm2020/lib/pipes/reverse-list.pipe.mjs +0 -17
- package/esm2020/lib/pipes/titlecase.pipe.mjs +0 -22
- package/esm2020/lib/report-builder.permission.mjs +0 -13
- package/esm2020/lib/resolveio-class.mjs +0 -41
- package/esm2020/lib/shared/shared.module.mjs +0 -96
- package/esm2020/lib/socket-manager.service.mjs +0 -339
- package/esm2020/lib/socket.service.mjs +0 -215
- package/esm2020/lib/super-admin.permission.mjs +0 -9
- package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +0 -204
- package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +0 -122
- package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +0 -137
- package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +0 -115
- package/esm2020/lib/support-ticket/support-ticket.component.mjs +0 -63
- package/esm2020/lib/support-ticket/support-ticket.module.mjs +0 -50
- package/esm2020/lib/support-ticket/support-ticket.routing.mjs +0 -20
- package/esm2020/lib/support-ticket/support-ticket.service.mjs +0 -17
- package/esm2020/lib/token-manager.service.mjs +0 -26
- package/esm2020/lib/user-settings/settings/users-settings.component.mjs +0 -296
- package/esm2020/lib/user-settings/user-settings.component.mjs +0 -57
- package/esm2020/lib/user-settings/user-settings.module.mjs +0 -41
- package/esm2020/lib/user-settings/user-settings.permission.mjs +0 -10
- package/esm2020/lib/user-settings/user-settings.routing.mjs +0 -14
- package/esm2020/lib/user-settings/user-settings.service.mjs +0 -17
- package/esm2020/lib/util/action-name.helper.mjs +0 -9
- package/esm2020/lib/util/aws.service.mjs +0 -79
- package/esm2020/lib/util/common.helper.mjs +0 -161
- package/esm2020/lib/util/validation.service.mjs +0 -185
- package/esm2020/lib/util/window-resize.service.mjs +0 -24
- package/esm2020/lib/util/window.service.mjs +0 -16
- package/esm2020/lib/widgets/alert/alert.model.mjs +0 -2
- package/esm2020/lib/widgets/alert/alert.service.mjs +0 -78
- package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +0 -79
- package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +0 -34
- package/esm2020/lib/widgets/data-table/data-table.component.mjs +0 -77
- package/esm2020/lib/widgets/data-table/data-table.model.mjs +0 -2
- package/esm2020/lib/widgets/data-table/data-table.module.mjs +0 -41
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +0 -295
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +0 -32
- package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +0 -63
- package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +0 -57
- package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +0 -271
- package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +0 -517
- package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +0 -57
- package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +0 -328
- package/esm2020/lib/widgets/dialog/dialog.select-array-objs.content.mjs +0 -200
- package/esm2020/lib/widgets/dialog/dialog.select-array.content.mjs +0 -305
- package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +0 -191
- package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +0 -185
- package/esm2020/lib/widgets/dialog/dialog.select-with-buttons-url.content.mjs +0 -162
- package/esm2020/lib/widgets/dialog/dialog.service.mjs +0 -97
- package/esm2020/lib/widgets/file/file-upload.component.mjs +0 -426
- package/esm2020/lib/widgets/file/file-upload.module.mjs +0 -48
- package/esm2020/lib/widgets/form-button/form-button.component.mjs +0 -94
- package/esm2020/lib/widgets/form-button/form-button.module.mjs +0 -28
- package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +0 -220
- package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +0 -104
- package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +0 -2
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +0 -38
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +0 -24
- package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +0 -184
- package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +0 -37
- package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +0 -67
- package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +0 -48
- package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +0 -174
- package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +0 -38
- package/esm2020/lib/widgets/user-role/user-role.component.mjs +0 -27
- package/esm2020/lib/widgets/user-role/user-role.module.mjs +0 -24
- package/esm2020/public_api.mjs +0 -91
- package/esm2020/resolveio-client-lib-core.mjs +0 -5
- package/fesm2015/resolveio-client-lib-core.mjs +0 -9191
- package/fesm2015/resolveio-client-lib-core.mjs.map +0 -1
- package/fesm2020/resolveio-client-lib-core.mjs +0 -9184
- package/fesm2020/resolveio-client-lib-core.mjs.map +0 -1
- package/lib/account-manager.service.d.ts +0 -41
- package/lib/auth/auth-guard.service.d.ts +0 -26
- package/lib/auth/auth-permissions.service.d.ts +0 -10
- package/lib/auth/auth.service.d.ts +0 -30
- package/lib/auth/auth365.component.d.ts +0 -20
- package/lib/auth/can-deactivate-guard.service.d.ts +0 -11
- package/lib/auth/enroll.component.d.ts +0 -28
- package/lib/auth/forgot-password.component.d.ts +0 -28
- package/lib/core.component.d.ts +0 -64
- package/lib/core.module.d.ts +0 -35
- package/lib/core.service.d.ts +0 -49
- package/lib/directive/focus.d.ts +0 -10
- package/lib/directive/scroll.d.ts +0 -20
- package/lib/home/home.component.d.ts +0 -28
- package/lib/logger/logger.component.d.ts +0 -37
- package/lib/models/app-status.model.d.ts +0 -4
- package/lib/models/collection-document.model.d.ts +0 -6
- package/lib/models/cron-job.model.d.ts +0 -13
- package/lib/models/dialog.model.d.ts +0 -23
- package/lib/models/file.model.d.ts +0 -9
- package/lib/models/log-method-latency.model.d.ts +0 -7
- package/lib/models/navbar-main-tab.model.d.ts +0 -14
- package/lib/models/pagination.model.d.ts +0 -17
- package/lib/models/permission.model.d.ts +0 -14
- package/lib/models/select-data-label.model.d.ts +0 -9
- package/lib/models/subscription.model.d.ts +0 -19
- package/lib/models/support-ticket.model.d.ts +0 -71
- package/lib/models/user-group.model.d.ts +0 -20
- package/lib/models/user.model.d.ts +0 -70
- package/lib/offline-db.d.ts +0 -28
- package/lib/offline-manager.service.d.ts +0 -23
- package/lib/pipes/domsanitizor.pipe.d.ts +0 -10
- package/lib/pipes/filter.pipe.d.ts +0 -12
- package/lib/pipes/json-parse.pipe.d.ts +0 -7
- package/lib/pipes/minus-currency.pipe.d.ts +0 -7
- package/lib/pipes/phone.pipe.d.ts +0 -7
- package/lib/pipes/pipe.module.d.ts +0 -13
- package/lib/pipes/reverse-list.pipe.d.ts +0 -6
- package/lib/pipes/titlecase.pipe.d.ts +0 -7
- package/lib/report-builder.permission.d.ts +0 -2
- package/lib/resolveio-class.d.ts +0 -26
- package/lib/shared/shared.module.d.ts +0 -17
- package/lib/socket-manager.service.d.ts +0 -38
- package/lib/socket.service.d.ts +0 -44
- package/lib/super-admin.permission.d.ts +0 -2
- package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +0 -32
- package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +0 -30
- package/lib/support-ticket/list/support-ticket-list.component.d.ts +0 -26
- package/lib/support-ticket/new/support-ticket-new.component.d.ts +0 -26
- package/lib/support-ticket/support-ticket.component.d.ts +0 -20
- package/lib/support-ticket/support-ticket.module.d.ts +0 -15
- package/lib/support-ticket/support-ticket.routing.d.ts +0 -3
- package/lib/support-ticket/support-ticket.service.d.ts +0 -9
- package/lib/token-manager.service.d.ts +0 -11
- package/lib/user-settings/settings/users-settings.component.d.ts +0 -54
- package/lib/user-settings/user-settings.component.d.ts +0 -20
- package/lib/user-settings/user-settings.module.d.ts +0 -12
- package/lib/user-settings/user-settings.permission.d.ts +0 -2
- package/lib/user-settings/user-settings.routing.d.ts +0 -3
- package/lib/user-settings/user-settings.service.d.ts +0 -9
- package/lib/util/action-name.helper.d.ts +0 -1
- package/lib/util/aws.service.d.ts +0 -17
- package/lib/util/common.helper.d.ts +0 -12
- package/lib/util/validation.service.d.ts +0 -88
- package/lib/util/window-resize.service.d.ts +0 -12
- package/lib/util/window.service.d.ts +0 -6
- package/lib/widgets/alert/alert.model.d.ts +0 -1
- package/lib/widgets/alert/alert.service.d.ts +0 -11
- package/lib/widgets/collapse-table/collapse-table.component.d.ts +0 -23
- package/lib/widgets/collapse-table/collapse-table.module.d.ts +0 -9
- package/lib/widgets/data-table/data-table.component.d.ts +0 -23
- package/lib/widgets/data-table/data-table.model.d.ts +0 -13
- package/lib/widgets/data-table/data-table.module.d.ts +0 -12
- package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +0 -24
- package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +0 -10
- package/lib/widgets/dialog/dialog.confirm.content.d.ts +0 -12
- package/lib/widgets/dialog/dialog.error.content.d.ts +0 -11
- package/lib/widgets/dialog/dialog.input.content.d.ts +0 -18
- package/lib/widgets/dialog/dialog.login.content.d.ts +0 -17
- package/lib/widgets/dialog/dialog.notify.content.d.ts +0 -11
- package/lib/widgets/dialog/dialog.register.content.d.ts +0 -13
- package/lib/widgets/dialog/dialog.select-array-objs.content.d.ts +0 -23
- package/lib/widgets/dialog/dialog.select-array.content.d.ts +0 -31
- package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +0 -22
- package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +0 -21
- package/lib/widgets/dialog/dialog.select-with-buttons-url.content.d.ts +0 -25
- package/lib/widgets/dialog/dialog.service.d.ts +0 -21
- package/lib/widgets/file/file-upload.component.d.ts +0 -49
- package/lib/widgets/file/file-upload.module.d.ts +0 -14
- package/lib/widgets/form-button/form-button.component.d.ts +0 -15
- package/lib/widgets/form-button/form-button.module.d.ts +0 -9
- package/lib/widgets/navbar-main/navbar-main.component.d.ts +0 -53
- package/lib/widgets/navbar-module/navbar-module.component.d.ts +0 -24
- package/lib/widgets/navbar-module/navbar-module.model.d.ts +0 -13
- package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +0 -17
- package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +0 -8
- package/lib/widgets/scheduler/scheduler.component.d.ts +0 -50
- package/lib/widgets/scheduler/scheduler.module.d.ts +0 -11
- package/lib/widgets/sort-table/sort-table-header.component.d.ts +0 -23
- package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +0 -17
- package/lib/widgets/sort-table/sort-table.directive.d.ts +0 -48
- package/lib/widgets/sort-table/sort-table.module.d.ts +0 -11
- package/lib/widgets/user-role/user-role.component.d.ts +0 -10
- package/lib/widgets/user-role/user-role.module.d.ts +0 -8
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { UserSettingsService } from './user-settings.service';
|
|
3
|
-
import { UserSettingsModulePermission } from './user-settings.permission';
|
|
4
|
-
import { ProviderService, BaseComponent } from '../resolveio-class';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./user-settings.service";
|
|
7
|
-
import * as i2 from "../resolveio-class";
|
|
8
|
-
import * as i3 from "@angular/router";
|
|
9
|
-
export class UserSettingsComponent extends BaseComponent {
|
|
10
|
-
constructor(_us, _services) {
|
|
11
|
-
super(_services);
|
|
12
|
-
this._us = _us;
|
|
13
|
-
this._services = _services;
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
this.selectedUserSettings$ = this._us.selectedUser.subscribe(val => this.selectedUserSettingsChanged(val));
|
|
17
|
-
}
|
|
18
|
-
ngOnDestroy() {
|
|
19
|
-
this._us.setSelectedUser('0');
|
|
20
|
-
this.selectedUserSettings$.unsubscribe();
|
|
21
|
-
}
|
|
22
|
-
selectedUserSettingsChanged(id) {
|
|
23
|
-
this.setUserSettingsMenuData();
|
|
24
|
-
}
|
|
25
|
-
setUserSettingsMenuData(id, user) {
|
|
26
|
-
let tabs = [];
|
|
27
|
-
UserSettingsModulePermission.views.forEach(view => {
|
|
28
|
-
if (this._services._account.isUserInView(view.link) || this._services._account.isUserSuperAdmin()) {
|
|
29
|
-
switch (view.link) {
|
|
30
|
-
case '/user-settings/settings':
|
|
31
|
-
tabs.push({ link: '/user-settings/settings', params: null, label: 'Settings' });
|
|
32
|
-
break;
|
|
33
|
-
default:
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
this.menuData = {
|
|
39
|
-
title: 'User Settings',
|
|
40
|
-
module: 'User Settings',
|
|
41
|
-
description_name: 'User: ',
|
|
42
|
-
description: user ? user.fullname : '',
|
|
43
|
-
tabs: tabs
|
|
44
|
-
};
|
|
45
|
-
this._services._app.setNavbarModuleData(this.menuData);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
UserSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsComponent, deps: [{ token: i1.UserSettingsService }, { token: i2.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
UserSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserSettingsComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: '<router-outlet></router-outlet>', isInline: true, dependencies: [{ kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsComponent, decorators: [{
|
|
51
|
-
type: Component,
|
|
52
|
-
args: [{
|
|
53
|
-
providers: [ProviderService],
|
|
54
|
-
template: '<router-outlet></router-outlet>'
|
|
55
|
-
}]
|
|
56
|
-
}], ctorParameters: function () { return [{ type: i1.UserSettingsService }, { type: i2.ProviderService }]; } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQUt2RCxZQUFvQixHQUF3QixFQUFVLFNBQTBCO1FBQy9FLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLFFBQUcsR0FBSCxHQUFHLENBQXFCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFaEYsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUMzRCxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxFQUFVO1FBQ3JDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFXLEVBQUUsSUFBZ0I7UUFDcEQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsNEJBQTRCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDbEcsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNsQixLQUFLLHlCQUF5Qjt3QkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO3dCQUM5RSxNQUFNO29CQUNQO3dCQUNDLE1BQU07aUJBQ1A7YUFDRDtRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLEtBQUssRUFBRSxlQUFlO1lBQ3RCLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLGdCQUFnQixFQUFFLFFBQVE7WUFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0QyxJQUFJLEVBQUUsSUFBSTtTQUNWLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7bUhBakRXLHFCQUFxQjt1R0FBckIscUJBQXFCLHVDQUp0QixDQUFDLGVBQWUsQ0FBQyxpREFDbEIsaUNBQWlDOzRGQUcvQixxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1YsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixRQUFRLEVBQUUsaUNBQWlDO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmJhck1vZGVsIH0gZnJvbSAnLi4vd2lkZ2V0cy9uYXZiYXItbW9kdWxlL25hdmJhci1tb2R1bGUubW9kZWwnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vdXNlci1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzTW9kdWxlUGVybWlzc2lvbiB9IGZyb20gJy4vdXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uJztcbmltcG9ydCB7IFByb3ZpZGVyU2VydmljZSwgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3Jlc29sdmVpby1jbGFzcyc7XG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdXNlci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuXHRwcm92aWRlcnM6IFtQcm92aWRlclNlcnZpY2VdLFxuXHR0ZW1wbGF0ZTogJzxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD4nXG59KVxuXG5leHBvcnQgY2xhc3MgVXNlclNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHsgXG5cdHNlbGVjdGVkVXNlclNldHRpbmdzJDogU3Vic2NyaXB0aW9uO1xuXG5cdG1lbnVEYXRhOiBOYXZiYXJNb2RlbDtcblx0XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3VzOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLCBwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuc2VsZWN0ZWRVc2VyU2V0dGluZ3MkID0gdGhpcy5fdXMuc2VsZWN0ZWRVc2VyLnN1YnNjcmliZShcblx0XHRcdHZhbCA9PiB0aGlzLnNlbGVjdGVkVXNlclNldHRpbmdzQ2hhbmdlZCh2YWwpXG5cdFx0KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuX3VzLnNldFNlbGVjdGVkVXNlcignMCcpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZFVzZXJTZXR0aW5ncyQudW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHNlbGVjdGVkVXNlclNldHRpbmdzQ2hhbmdlZChpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXRVc2VyU2V0dGluZ3NNZW51RGF0YSgpO1xuXHR9XG5cblx0c2V0VXNlclNldHRpbmdzTWVudURhdGEoaWQ/OiBzdHJpbmcsIHVzZXI/OiBVc2VyTW9kZWwpIHtcblx0XHRsZXQgdGFicyA9IFtdO1xuXG5cdFx0VXNlclNldHRpbmdzTW9kdWxlUGVybWlzc2lvbi52aWV3cy5mb3JFYWNoKHZpZXcgPT4ge1xuXHRcdFx0aWYgKHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmlzVXNlckluVmlldyh2aWV3LmxpbmspIHx8IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmlzVXNlclN1cGVyQWRtaW4oKSkge1xuXHRcdFx0XHRzd2l0Y2ggKHZpZXcubGluaykge1xuXHRcdFx0XHRcdGNhc2UgJy91c2VyLXNldHRpbmdzL3NldHRpbmdzJzogXG5cdFx0XHRcdFx0XHR0YWJzLnB1c2goe2xpbms6ICcvdXNlci1zZXR0aW5ncy9zZXR0aW5ncycsIHBhcmFtczogbnVsbCwgbGFiZWw6ICdTZXR0aW5ncyd9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZW51RGF0YSA9IHtcblx0XHRcdHRpdGxlOiAnVXNlciBTZXR0aW5ncycsXG5cdFx0XHRtb2R1bGU6ICdVc2VyIFNldHRpbmdzJyxcblx0XHRcdGRlc2NyaXB0aW9uX25hbWU6ICdVc2VyOiAnLFxuXHRcdFx0ZGVzY3JpcHRpb246IHVzZXIgPyB1c2VyLmZ1bGxuYW1lIDogJycsXG5cdFx0XHR0YWJzOiB0YWJzXG5cdFx0fTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9hcHAuc2V0TmF2YmFyTW9kdWxlRGF0YSh0aGlzLm1lbnVEYXRhKTtcblx0fVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { SharedModule } from '../shared/shared.module';
|
|
3
|
-
import { UserSettingsRouting } from './user-settings.routing';
|
|
4
|
-
import { UserSettingsComponent } from './user-settings.component';
|
|
5
|
-
import { UserSettingsService } from './user-settings.service';
|
|
6
|
-
import { DatatableModule } from '../widgets/data-table/data-table.module';
|
|
7
|
-
import { FileModule } from '../widgets/file/file-upload.module';
|
|
8
|
-
import { UsersSettingsComponent } from './settings/users-settings.component';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/router";
|
|
11
|
-
export class UserSettingsModule {
|
|
12
|
-
}
|
|
13
|
-
UserSettingsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
-
UserSettingsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsModule, declarations: [UserSettingsComponent,
|
|
15
|
-
UsersSettingsComponent], imports: [SharedModule, i1.RouterModule, DatatableModule,
|
|
16
|
-
FileModule] });
|
|
17
|
-
UserSettingsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsModule, providers: [
|
|
18
|
-
UserSettingsService
|
|
19
|
-
], imports: [SharedModule,
|
|
20
|
-
UserSettingsRouting,
|
|
21
|
-
DatatableModule,
|
|
22
|
-
FileModule] });
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsModule, decorators: [{
|
|
24
|
-
type: NgModule,
|
|
25
|
-
args: [{
|
|
26
|
-
imports: [
|
|
27
|
-
SharedModule,
|
|
28
|
-
UserSettingsRouting,
|
|
29
|
-
DatatableModule,
|
|
30
|
-
FileModule
|
|
31
|
-
],
|
|
32
|
-
declarations: [
|
|
33
|
-
UserSettingsComponent,
|
|
34
|
-
UsersSettingsComponent
|
|
35
|
-
],
|
|
36
|
-
providers: [
|
|
37
|
-
UserSettingsService
|
|
38
|
-
]
|
|
39
|
-
}]
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFpQjdFLE1BQU0sT0FBTyxrQkFBa0I7O2dIQUFsQixrQkFBa0I7aUhBQWxCLGtCQUFrQixpQkFQN0IscUJBQXFCO1FBQ3JCLHNCQUFzQixhQVB0QixZQUFZLG1CQUVaLGVBQWU7UUFDZixVQUFVO2lIQVVDLGtCQUFrQixhQUpuQjtRQUNWLG1CQUFtQjtLQUNuQixZQVhBLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLFVBQVU7NEZBVUMsa0JBQWtCO2tCQWY5QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixVQUFVO3FCQUNWO29CQUNELFlBQVksRUFBRTt3QkFDYixxQkFBcUI7d0JBQ3JCLHNCQUFzQjtxQkFDdEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWLG1CQUFtQjtxQkFDbkI7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuXG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NSb3V0aW5nIH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLnJvdXRpbmcnO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXRhYmxlTW9kdWxlIH0gZnJvbSAnLi4vd2lkZ2V0cy9kYXRhLXRhYmxlL2RhdGEtdGFibGUubW9kdWxlJztcbmltcG9ydCB7IEZpbGVNb2R1bGUgfSBmcm9tICcuLi93aWRnZXRzL2ZpbGUvZmlsZS11cGxvYWQubW9kdWxlJztcbmltcG9ydCB7IFVzZXJzU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmdzL3VzZXJzLXNldHRpbmdzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6IFtcblx0XHRTaGFyZWRNb2R1bGUsXG5cdFx0VXNlclNldHRpbmdzUm91dGluZyxcblx0XHREYXRhdGFibGVNb2R1bGUsXG5cdFx0RmlsZU1vZHVsZVxuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFsgXG5cdFx0VXNlclNldHRpbmdzQ29tcG9uZW50LFxuXHRcdFVzZXJzU2V0dGluZ3NDb21wb25lbnRcblx0XSxcblx0cHJvdmlkZXJzOiBbXG5cdFx0VXNlclNldHRpbmdzU2VydmljZVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXR0aW5nc01vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export const UserSettingsModulePermission = {
|
|
2
|
-
name: 'user-settings',
|
|
3
|
-
views: [
|
|
4
|
-
{ link: '/user-settings/settings', label: 'Settings' }
|
|
5
|
-
],
|
|
6
|
-
approval: {
|
|
7
|
-
type: 'user-settings'
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEwQjtJQUNsRSxJQUFJLEVBQUUsZUFBZTtJQUNyQixLQUFLLEVBQUU7UUFDTixFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDO0tBQ3BEO0lBQ0QsUUFBUSxFQUFFO1FBQ1QsSUFBSSxFQUFFLGVBQWU7S0FDckI7Q0FDRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlUGVybWlzc2lvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24ubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgVXNlclNldHRpbmdzTW9kdWxlUGVybWlzc2lvbjogTW9kdWxlUGVybWlzc2lvbk1vZGVsID0ge1xuXHRuYW1lOiAndXNlci1zZXR0aW5ncycsXG5cdHZpZXdzOiBbXG5cdFx0e2xpbms6ICcvdXNlci1zZXR0aW5ncy9zZXR0aW5ncycsIGxhYmVsOiAnU2V0dGluZ3MnfVxuXHRdLFxuXHRhcHByb3ZhbDoge1xuXHRcdHR5cGU6ICd1c2VyLXNldHRpbmdzJ1xuXHR9XG59O1xuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { RouterModule } from '@angular/router';
|
|
2
|
-
import { UserSettingsComponent } from './user-settings.component';
|
|
3
|
-
import { UsersSettingsComponent } from './settings/users-settings.component';
|
|
4
|
-
const routes = [{
|
|
5
|
-
path: 'user-settings',
|
|
6
|
-
component: UserSettingsComponent,
|
|
7
|
-
children: [
|
|
8
|
-
{ path: 'settings', component: UsersSettingsComponent },
|
|
9
|
-
{ path: '**', redirectTo: 'settings' }
|
|
10
|
-
]
|
|
11
|
-
}
|
|
12
|
-
];
|
|
13
|
-
export const UserSettingsRouting = RouterModule.forChild(routes);
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5yb3V0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBVSxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RSxNQUFNLE1BQU0sR0FBVyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsUUFBUSxFQUFFO1lBQ1QsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTtZQUN2RCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtTQUN0QztLQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUErQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy91c2Vycy1zZXR0aW5ncy5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFt7IFxuXHRwYXRoOiAndXNlci1zZXR0aW5ncycsXG5cdGNvbXBvbmVudDogVXNlclNldHRpbmdzQ29tcG9uZW50LFxuXHRjaGlsZHJlbjogW1xuXHRcdHsgcGF0aDogJ3NldHRpbmdzJywgY29tcG9uZW50OiBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0sXG5cdFx0eyBwYXRoOiAnKionLCByZWRpcmVjdFRvOiAnc2V0dGluZ3MnIH1cblx0XX1cbl07XG5cbmV4cG9ydCBjb25zdCBVc2VyU2V0dGluZ3NSb3V0aW5nOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJvdXRlPiA9IFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpO1xuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class UserSettingsService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.selectedUser = new BehaviorSubject('0');
|
|
7
|
-
}
|
|
8
|
-
setSelectedUser(id) {
|
|
9
|
-
this.selectedUser.next(id);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
UserSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
-
UserSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsService });
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserSettingsService, decorators: [{
|
|
15
|
-
type: Injectable
|
|
16
|
-
}], ctorParameters: function () { return []; } });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHdkMsTUFBTSxPQUFPLG1CQUFtQjtJQUkvQjtRQUZBLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekIsQ0FBQztJQUVoQixlQUFlLENBQUMsRUFBVTtRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDOztpSEFSVyxtQkFBbUI7cUhBQW5CLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NTZXJ2aWNlIHtcblxuXHRzZWxlY3RlZFVzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcwJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdHNldFNlbGVjdGVkVXNlcihpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZWxlY3RlZFVzZXIubmV4dChpZCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
let typeCache = {};
|
|
2
|
-
export function type(label) {
|
|
3
|
-
if (typeCache[label]) {
|
|
4
|
-
throw new Error(`Action type "${label}" is not unqiue"`);
|
|
5
|
-
}
|
|
6
|
-
typeCache[label] = true;
|
|
7
|
-
return label;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW5hbWUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3V0aWwvYWN0aW9uLW5hbWUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksU0FBUyxHQUFpQyxFQUFFLENBQUM7QUFDakQsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFhO0lBQ3BDLElBQUksU0FBUyxDQUFTLEtBQUssQ0FBQyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssa0JBQWtCLENBQUMsQ0FBQztLQUN6RDtJQUVELFNBQVMsQ0FBUyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7SUFFaEMsT0FBVSxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCB0eXBlQ2FjaGU6IHsgW2xhYmVsOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB0eXBlPFQ+KGxhYmVsOiBUIHwgJycpOiBUIHtcblx0aWYgKHR5cGVDYWNoZVs8c3RyaW5nPmxhYmVsXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGUgXCIke2xhYmVsfVwiIGlzIG5vdCB1bnFpdWVcImApO1xuXHR9XG5cblx0dHlwZUNhY2hlWzxzdHJpbmc+bGFiZWxdID0gdHJ1ZTtcblxuXHRyZXR1cm4gPFQ+bGFiZWw7XG59XG4iXX0=
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { SocketManagerService } from '../socket-manager.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../socket-manager.service";
|
|
5
|
-
export class AwsService {
|
|
6
|
-
constructor(_socket) {
|
|
7
|
-
this._socket = _socket;
|
|
8
|
-
}
|
|
9
|
-
dataURItoFile(dataURI, filename) {
|
|
10
|
-
// convert base64 to raw binary data held in a string
|
|
11
|
-
// doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
|
|
12
|
-
let byteString = atob(dataURI.split(',')[1]);
|
|
13
|
-
// separate out the mime component
|
|
14
|
-
let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
|
|
15
|
-
// write the bytes of the string to an ArrayBuffer
|
|
16
|
-
let ab = new ArrayBuffer(byteString.length);
|
|
17
|
-
let ia = new Uint8Array(ab);
|
|
18
|
-
for (let i = 0; i < byteString.length; i++) {
|
|
19
|
-
ia[i] = byteString.charCodeAt(i);
|
|
20
|
-
}
|
|
21
|
-
// write the ArrayBuffer to a blob, and you're done
|
|
22
|
-
let blob = new Blob([ab], { type: mimeString });
|
|
23
|
-
blob['lastModifiedDate'] = new Date();
|
|
24
|
-
blob['name'] = filename;
|
|
25
|
-
return blob;
|
|
26
|
-
}
|
|
27
|
-
uploadFile(file, type, order, filename) {
|
|
28
|
-
return new Promise((resolve, reject) => {
|
|
29
|
-
if (file.size) {
|
|
30
|
-
this.getBase64(file).then(data => {
|
|
31
|
-
this._socket.call('uploadFileAndSave', filename ? filename : file.name, data, file.size, order ? order : -1, type, true, (err, res) => {
|
|
32
|
-
if (res) {
|
|
33
|
-
resolve(res);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
reject(err);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
reject('Invalid File');
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
getFileWithKey(key, callback) {
|
|
47
|
-
this._socket.call('getFile', key, callback);
|
|
48
|
-
}
|
|
49
|
-
getFileWithId(id, callback) {
|
|
50
|
-
this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
|
|
51
|
-
this.getFileWithKey(file.key, callback);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
deleteFile(key, callback) {
|
|
55
|
-
this._socket.call('deleteFile', key, callback);
|
|
56
|
-
}
|
|
57
|
-
deleteFileWithId(id, callback) {
|
|
58
|
-
this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
|
|
59
|
-
this.deleteFile(file.key, callback);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
deleteFilesWithKeys(keys, callback) {
|
|
63
|
-
this._socket.call('deleteFiles', keys, callback);
|
|
64
|
-
}
|
|
65
|
-
getBase64(file) {
|
|
66
|
-
return new Promise((resolve, reject) => {
|
|
67
|
-
const reader = new FileReader();
|
|
68
|
-
reader.readAsDataURL(file);
|
|
69
|
-
reader.onload = () => resolve(reader.result);
|
|
70
|
-
reader.onerror = error => reject(error);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
AwsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AwsService, deps: [{ token: i1.SocketManagerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
|
-
AwsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AwsService });
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AwsService, decorators: [{
|
|
77
|
-
type: Injectable
|
|
78
|
-
}], ctorParameters: function () { return [{ type: i1.SocketManagerService }]; } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbC9hd3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFJakUsTUFBTSxPQUFPLFVBQVU7SUFFdEIsWUFBb0IsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBRyxDQUFDO0lBRXJELGFBQWEsQ0FBQyxPQUFlLEVBQUUsUUFBZ0I7UUFDOUMscURBQXFEO1FBQ3JELHNGQUFzRjtRQUN0RixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGtDQUFrQztRQUNsQyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkUsa0RBQWtEO1FBQ2xELElBQUksRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQztRQUVE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TSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7d0dBL0VXLFVBQVU7NEdBQVYsVUFBVTs0RkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvY2tldE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc29ja2V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZmlsZS5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBd3NTZXJ2aWNlICB7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc29ja2V0OiBTb2NrZXRNYW5hZ2VyU2VydmljZSkge31cblxuXHRkYXRhVVJJdG9GaWxlKGRhdGFVUkk6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuXHRcdC8vIGNvbnZlcnQgYmFzZTY0IHRvIHJhdyBiaW5hcnkgZGF0YSBoZWxkIGluIGEgc3RyaW5nXG5cdFx0Ly8gZG9lc24ndCBoYW5kbGUgVVJMRW5jb2RlZCBEYXRhVVJJcyAtIHNlZSBTTyBhbnN3ZXIgIzY4NTAyNzYgZm9yIGNvZGUgdGhhdCBkb2VzIHRoaXNcblx0XHRsZXQgYnl0ZVN0cmluZyA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuXHRcdC8vIHNlcGFyYXRlIG91dCB0aGUgbWltZSBjb21wb25lbnRcblx0XHRsZXQgbWltZVN0cmluZyA9IGRhdGFVUkkuc3BsaXQoJywnKVswXS5zcGxpdCgnOicpWzFdLnNwbGl0KCc7JylbMF07XG5cblx0XHQvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuXHRcdGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG5cdFx0bGV0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWFbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0Ly8gd3JpdGUgdGhlIEFycmF5QnVmZmVyIHRvIGEgYmxvYiwgYW5kIHlvdSdyZSBkb25lXG5cdFx0bGV0IGJsb2IgPSBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xuXHRcdFxuXHRcdGJsb2JbJ2xhc3RNb2RpZmllZERhdGUnXSA9IG5ldyBEYXRlKCk7XG5cdFx0YmxvYlsnbmFtZSddID0gZmlsZW5hbWU7XG5cblx0XHRyZXR1cm4gPEZpbGU+YmxvYjtcblx0fVxuXG5cdHVwbG9hZEZpbGUoZmlsZTogRmlsZSwgdHlwZTogc3RyaW5nLCBvcmRlcj86IG51bWJlciwgZmlsZW5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVNb2RlbD4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSAoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0aWYgKGZpbGUuc2l6ZSkge1xuXHRcdFx0XHR0aGlzLmdldEJhc2U2NChmaWxlKS50aGVuKGRhdGEgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX3NvY2tldC5jYWxsKCd1cGxvYWRGaWxlQW5kU2F2ZScsIGZpbGVuYW1lID8gZmlsZW5hbWUgOiBmaWxlLm5hbWUsIGRhdGEsIGZpbGUuc2l6ZSwgb3JkZXIgPyBvcmRlciA6IC0xLCB0eXBlLCB0cnVlLCAoZXJyLCByZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRyZWplY3QoJ0ludmFsaWQgRmlsZScpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0RmlsZVdpdGhLZXkoa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuXHRcdHRoaXMuX3NvY2tldC5jYWxsKCdnZXRGaWxlJywga2V5LCBjYWxsYmFjayk7XG5cdH1cblxuXHRnZXRGaWxlV2l0aElkKGlkOiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuXHRcdHRoaXMuX3NvY2tldC5jYWxsKCdmaW5kT25lJywgJ2ZpbGVzJywge19pZDogaWR9LCAoZXJyLCBmaWxlKSA9PiB7XG5cdFx0XHR0aGlzLmdldEZpbGVXaXRoS2V5KGZpbGUua2V5LCBjYWxsYmFjayk7XG5cdFx0fSk7XG5cdH1cblxuXHRkZWxldGVGaWxlKGtleTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZGVsZXRlRmlsZScsIGtleSwgY2FsbGJhY2spO1xuXHR9XG5cblx0ZGVsZXRlRmlsZVdpdGhJZChpZDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZmluZE9uZScsICdmaWxlcycsIHtfaWQ6IGlkfSwgKGVyciwgZmlsZSkgPT4ge1xuXHRcdFx0dGhpcy5kZWxldGVGaWxlKGZpbGUua2V5LCBjYWxsYmFjayk7XG5cdFx0fSk7XG5cdH1cblxuXHRkZWxldGVGaWxlc1dpdGhLZXlzKGtleXM6IHN0cmluZ1tdLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZGVsZXRlRmlsZXMnLCBrZXlzLCBjYWxsYmFjayk7XG5cdH1cblxuXHRnZXRCYXNlNjQoZmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblx0XHRcdHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKDxzdHJpbmc+cmVhZGVyLnJlc3VsdCk7XG5cdFx0XHRyZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { detailedDiff } from 'deep-object-diff';
|
|
2
|
-
import moment from 'moment';
|
|
3
|
-
const isObject = (object) => {
|
|
4
|
-
return object instanceof Object && object.constructor.name === 'Object';
|
|
5
|
-
};
|
|
6
|
-
export function toTitleCase(str) {
|
|
7
|
-
return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
|
|
8
|
-
}
|
|
9
|
-
export function isUpperCase(str) {
|
|
10
|
-
return (/^[A-Z]*$/).test(str);
|
|
11
|
-
}
|
|
12
|
-
export function pad(num, size) {
|
|
13
|
-
let s = num + '';
|
|
14
|
-
while (s.length < size) {
|
|
15
|
-
s = '0' + s;
|
|
16
|
-
}
|
|
17
|
-
return s;
|
|
18
|
-
}
|
|
19
|
-
export function deepCopy(obj) {
|
|
20
|
-
return JSON.parse(JSON.stringify(obj), dateReviver);
|
|
21
|
-
}
|
|
22
|
-
export function dateReviver(key, value) {
|
|
23
|
-
if (typeof value === 'string') {
|
|
24
|
-
let a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
|
25
|
-
if (a) {
|
|
26
|
-
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
export function b64toBlobURL(b64Data, contentType, sliceSize) {
|
|
32
|
-
b64Data = b64Data.replace('data:application/pdf;base64,', '');
|
|
33
|
-
contentType = contentType || '';
|
|
34
|
-
sliceSize = sliceSize || 512;
|
|
35
|
-
let byteCharacters = atob(b64Data);
|
|
36
|
-
let byteArrays = [];
|
|
37
|
-
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
|
38
|
-
let slice = byteCharacters.slice(offset, offset + sliceSize);
|
|
39
|
-
let byteNumbers = new Array(slice.length);
|
|
40
|
-
for (let i = 0; i < slice.length; i++) {
|
|
41
|
-
byteNumbers[i] = slice.charCodeAt(i);
|
|
42
|
-
}
|
|
43
|
-
let byteArray = new Uint8Array(byteNumbers);
|
|
44
|
-
byteArrays.push(byteArray);
|
|
45
|
-
}
|
|
46
|
-
let blob = new Blob(byteArrays, { type: contentType });
|
|
47
|
-
return URL.createObjectURL(blob);
|
|
48
|
-
}
|
|
49
|
-
export function blobToFile(theBlob, fileName) {
|
|
50
|
-
//A Blob() is almost a File() - it's just missing the two properties below which we will add
|
|
51
|
-
theBlob.lastModifiedDate = new Date();
|
|
52
|
-
theBlob.name = fileName;
|
|
53
|
-
return theBlob;
|
|
54
|
-
}
|
|
55
|
-
export function toDataURL(url, callback) {
|
|
56
|
-
let xhr = new XMLHttpRequest();
|
|
57
|
-
xhr.onload = function () {
|
|
58
|
-
let reader = new FileReader();
|
|
59
|
-
reader.onloadend = function () {
|
|
60
|
-
callback(reader.result);
|
|
61
|
-
};
|
|
62
|
-
reader.readAsDataURL(xhr.response);
|
|
63
|
-
};
|
|
64
|
-
xhr.open('GET', url);
|
|
65
|
-
xhr.responseType = 'blob';
|
|
66
|
-
xhr.send();
|
|
67
|
-
}
|
|
68
|
-
export function deepDiffDetails(object1, object2) {
|
|
69
|
-
let obj1 = deepCopy(object1);
|
|
70
|
-
let obj2 = deepCopy(object2);
|
|
71
|
-
let diff = detailedDiff(obj1, obj2);
|
|
72
|
-
let diffString = '';
|
|
73
|
-
const formatValue = (value) => {
|
|
74
|
-
if (value instanceof Date) {
|
|
75
|
-
return moment(value).format('llll');
|
|
76
|
-
}
|
|
77
|
-
else if (typeof value === 'object' && value !== null) {
|
|
78
|
-
Object.keys(value).filter(a => a.startsWith('_id') || a.startsWith('id_')).forEach(key => {
|
|
79
|
-
delete value[key];
|
|
80
|
-
});
|
|
81
|
-
return JSON.stringify(value); // Pretty print objects
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
return typeof value === 'string' ? `"${value}"` : String(value);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
const customArrayDiff = (arr1, arr2) => {
|
|
88
|
-
let arrayDiffResults = [];
|
|
89
|
-
const maxLength = Math.max(arr1.length, arr2.length);
|
|
90
|
-
for (let i = 0; i < maxLength; i++) {
|
|
91
|
-
if (arr1[i] && !arr2[i]) {
|
|
92
|
-
arrayDiffResults.push(`Removed at index ${i}: ${formatValue(arr1[i])}`);
|
|
93
|
-
}
|
|
94
|
-
else if (!arr1[i] && arr2[i]) {
|
|
95
|
-
arrayDiffResults.push(`Added at index ${i}: ${formatValue(arr2[i])}`);
|
|
96
|
-
}
|
|
97
|
-
else if (arr1[i] && arr2[i] && JSON.stringify(arr1[i]) !== JSON.stringify(arr2[i])) {
|
|
98
|
-
arrayDiffResults.push(`Changed at index ${i}: {${formatObjectDiff(arr1[i], arr2[i])}}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return arrayDiffResults.join(', ');
|
|
102
|
-
};
|
|
103
|
-
const formatObjectDiff = (obj1, obj2) => {
|
|
104
|
-
if (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {
|
|
105
|
-
return `from: ${formatValue(obj1)} to: ${formatValue(obj2)}`;
|
|
106
|
-
}
|
|
107
|
-
if (Array.isArray(obj1) || Array.isArray(obj2)) {
|
|
108
|
-
return customArrayDiff(Array.isArray(obj1) ? obj1 : [], Array.isArray(obj2) ? obj2 : []);
|
|
109
|
-
}
|
|
110
|
-
return Object.keys({ ...obj1, ...obj2 }).filter(a => !a.startsWith('_id') && !a.startsWith('id_')).map(key => {
|
|
111
|
-
const obj1Val = obj1 ? obj1[key] : undefined;
|
|
112
|
-
const obj2Val = obj2 ? obj2[key] : undefined;
|
|
113
|
-
return `${toTitleCase(key)}: ${formatObjectDiff(obj1Val, obj2Val)}`;
|
|
114
|
-
}).join(', ');
|
|
115
|
-
};
|
|
116
|
-
// Handle each diff type
|
|
117
|
-
['added', 'deleted', 'updated'].forEach(diffType => {
|
|
118
|
-
if (Object.keys(diff[diffType]).length > 0) {
|
|
119
|
-
const updates = Object.keys(diff[diffType])
|
|
120
|
-
.filter(key => diffType === 'added' ? true : (diffType === 'deleted' ? !diff['added'][key] : !diff['added'][key] && !diff['deleted'][key]))
|
|
121
|
-
.filter(key => !key.startsWith('_id') && !key.startsWith('id_'))
|
|
122
|
-
.map(key => `\n${toTitleCase(key)}: ${formatObjectDiff(obj1[key], obj2[key])}`)
|
|
123
|
-
.join(',');
|
|
124
|
-
diffString += updates ? `${updates}` : '';
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
return diffString;
|
|
128
|
-
}
|
|
129
|
-
export function generateCronStringFromDate(date) {
|
|
130
|
-
return date.getSeconds() + ' ' + date.getMinutes() + ' ' + date.getHours() + ' ' + date.getDate() + ' ' + (date.getMonth() + 1) + ' ' + date.getDay();
|
|
131
|
-
}
|
|
132
|
-
export function s2ab(s) {
|
|
133
|
-
let buf = new ArrayBuffer(s.length);
|
|
134
|
-
let view = new Uint8Array(buf);
|
|
135
|
-
// tslint:disable-next-line:no-bitwise
|
|
136
|
-
for (let i = 0; i !== s.length; ++i) {
|
|
137
|
-
view[i] = s.charCodeAt(i) & 0xFF;
|
|
138
|
-
}
|
|
139
|
-
return buf;
|
|
140
|
-
}
|
|
141
|
-
export function mergeDeep(target, ...sources) {
|
|
142
|
-
if (!sources.length) {
|
|
143
|
-
return target;
|
|
144
|
-
}
|
|
145
|
-
const source = sources.shift();
|
|
146
|
-
if (isObject(target) && isObject(source)) {
|
|
147
|
-
for (const key in source) {
|
|
148
|
-
if (isObject(source[key])) {
|
|
149
|
-
if (!target[key]) {
|
|
150
|
-
Object.assign(target, { [key]: {} });
|
|
151
|
-
}
|
|
152
|
-
mergeDeep(target[key], source[key]);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
Object.assign(target, { [key]: source[key] });
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return mergeDeep(target, ...sources);
|
|
160
|
-
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi91dGlsL2NvbW1vbi5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzNCLE9BQU8sTUFBTSxZQUFZLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLElBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNqQixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFO1FBQ3ZCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQUc7SUFDM0Is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LEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7S0FBRTtJQUMxRSxPQUFPLEdBQUcsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU87SUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDcEIsT0FBTyxNQUFNLENBQUM7S0FDZDtJQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUUvQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDekMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7WUFDekIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNyQztnQkFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3BDO2lCQUNJO2dCQUNKLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Q7S0FDRDtJQUVELE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXRhaWxlZERpZmYgfSBmcm9tICdkZWVwLW9iamVjdC1kaWZmJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuY29uc3QgaXNPYmplY3QgPSAob2JqZWN0KSA9PiB7XG5cdHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBPYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yLm5hbWUgPT09ICdPYmplY3QnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvVGl0bGVDYXNlKHN0cikge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL1xcd1xcUyovZywgZnVuY3Rpb24odHh0KXtyZXR1cm4gdHh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpOyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBwZXJDYXNlKHN0cikge1xuXHRyZXR1cm4gKC9eW0EtWl0qJC8pLnRlc3Qoc3RyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZChudW0sIHNpemUpIHtcblx0bGV0IHMgPSBudW0gKyAnJztcblx0d2hpbGUgKHMubGVuZ3RoIDwgc2l6ZSkge1xuXHRcdHMgPSAnMCcgKyBzO1xuXHR9XG5cdHJldHVybiBzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVlcENvcHkob2JqKSB7XG5cdHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaiksIGRhdGVSZXZpdmVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSZXZpdmVyKGtleSwgdmFsdWUpIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcblx0XHRsZXQgYSA9IC9eKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSlUKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSg/OlxcLlxcZCopPylaJC8uZXhlYyh2YWx1ZSk7XG5cdFx0aWYgKGEpIHtcblx0XHRcdHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrYVsxXSwgK2FbMl0gLSAxLCArYVszXSwgK2FbNF0sICthWzVdLCArYVs2XS5zcGxpdCgnLicpWzBdLCArYVs2XS5zcGxpdCgnLicpWzFdKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGI2NHRvQmxvYlVSTChiNjREYXRhLCBjb250ZW50VHlwZSwgc2xpY2VTaXplPykge1xuXHRiNjREYXRhID0gYjY0RGF0YS5yZXBsYWNlKCdkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJywgJycpO1xuXHRjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlIHx8ICcnO1xuXHRzbGljZVNpemUgPSBzbGljZVNpemUgfHwgNTEyO1xuXG5cdGxldCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYjY0RGF0YSk7XG5cdGxldCBieXRlQXJyYXlzID0gW107XG5cblx0Zm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBvZmZzZXQgKz0gc2xpY2VTaXplKSB7XG5cdFx0bGV0IHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuXG5cdFx0bGV0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZS5sZW5ndGg7IGkrKykge1xuXHRcdGJ5dGVOdW1iZXJzW2ldID0gc2xpY2UuY2hhckNvZGVBdChpKTtcblx0XHR9XG5cblx0XHRsZXQgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuXG5cdFx0Ynl0ZUFycmF5cy5wdXNoKGJ5dGVBcnJheSk7XG5cdH1cblxuXHRsZXQgYmxvYiA9IG5ldyBCbG9iKGJ5dGVBcnJheXMsIHt0eXBlOiBjb250ZW50VHlwZX0pO1xuXHRyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2JUb0ZpbGUodGhlQmxvYiwgZmlsZU5hbWUpIDogRmlsZSB7XG4gICAgLy9BIEJsb2IoKSBpcyBhbG1vc3QgYSBGaWxlKCkgLSBpdCdzIGp1c3QgbWlzc2luZyB0aGUgdHdvIHByb3BlcnRpZXMgYmVsb3cgd2hpY2ggd2Ugd2lsbCBhZGRcbiAgICB0aGVCbG9iLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHRoZUJsb2IubmFtZSA9IGZpbGVOYW1lO1xuICAgIHJldHVybiAoPEZpbGU+dGhlQmxvYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGFVUkwodXJsLCBjYWxsYmFjaykge1xuXHRsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cdHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblx0XHRsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblx0XHRyZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRjYWxsYmFjayhyZWFkZXIucmVzdWx0KTtcblx0XHR9O1xuXHRcdHJlYWRlci5yZWFkQXNEYXRhVVJMKHhoci5yZXNwb25zZSk7XG5cdH07XG5cdHhoci5vcGVuKCdHRVQnLCB1cmwpO1xuXHR4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xuXHR4aHIuc2VuZCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVlcERpZmZEZXRhaWxzKG9iamVjdDE6IGFueSwgb2JqZWN0MjogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgb2JqMSA9IGRlZXBDb3B5KG9iamVjdDEpO1xuXHRsZXQgb2JqMiA9IGRlZXBDb3B5KG9iamVjdDIpO1xuXG5cdGxldCBkaWZmID0gZGV0YWlsZWREaWZmKG9iajEsIG9iajIpO1xuXHRsZXQgZGlmZlN0cmluZyA9ICcnO1xuXG5cdGNvbnN0IGZvcm1hdFZhbHVlID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuXHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdHJldHVybiBtb21lbnQodmFsdWUpLmZvcm1hdCgnbGxsbCcpO1xuXHRcdH0gXG5cdFx0ZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuXHRcdFx0T2JqZWN0LmtleXModmFsdWUpLmZpbHRlcihhID0+IGEuc3RhcnRzV2l0aCgnX2lkJykgfHwgYS5zdGFydHNXaXRoKCdpZF8nKSkuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHRkZWxldGUgdmFsdWVba2V5XTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsgLy8gUHJldHR5IHByaW50IG9iamVjdHNcblx0XHR9IFxuXHRcdGVsc2Uge1xuXHRcdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBgXCIke3ZhbHVlfVwiYCA6IFN0cmluZyh2YWx1ZSk7XG5cdFx0fVxuXHR9O1xuXG5cdGNvbnN0IGN1c3RvbUFycmF5RGlmZiA9IChhcnIxOiBhbnlbXSwgYXJyMjogYW55W10pOiBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgYXJyYXlEaWZmUmVzdWx0cyA9IFtdO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heChhcnIxLmxlbmd0aCwgYXJyMi5sZW5ndGgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChhcnIxW2ldICYmICFhcnIyW2ldKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlEaWZmUmVzdWx0cy5wdXNoKGBSZW1vdmVkIGF0IGluZGV4ICR7aX06ICR7Zm9ybWF0VmFsdWUoYXJyMVtpXSl9YCk7XG4gICAgICAgICAgICB9IFxuXHRcdFx0ZWxzZSBpZiAoIWFycjFbaV0gJiYgYXJyMltpXSkge1xuICAgICAgICAgICAgICAgIGFycmF5RGlmZlJlc3VsdHMucHVzaChgQWRkZWQgYXQgaW5kZXggJHtpfTogJHtmb3JtYXRWYWx1ZShhcnIyW2ldKX1gKTtcbiAgICAgICAgICAgIH0gXG5cdFx0XHRlbHNlIGlmIChhcnIxW2ldICYmIGFycjJbaV0gJiYgSlNPTi5zdHJpbmdpZnkoYXJyMVtpXSkgIT09IEpTT04uc3RyaW5naWZ5KGFycjJbaV0pKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlEaWZmUmVzdWx0cy5wdXNoKGBDaGFuZ2VkIGF0IGluZGV4ICR7aX06IHske2Zvcm1hdE9iamVjdERpZmYoYXJyMVtpXSwgYXJyMltpXSl9fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFycmF5RGlmZlJlc3VsdHMuam9pbignLCAnKTtcbiAgICB9O1xuXG5cdGNvbnN0IGZvcm1hdE9iamVjdERpZmYgPSAob2JqMTogYW55LCBvYmoyOiBhbnkpOiBzdHJpbmcgPT4ge1xuXHRcdGlmIChvYmoxID09PSBudWxsIHx8IG9iajIgPT09IG51bGwgfHwgdHlwZW9mIG9iajEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmoyICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGBmcm9tOiAke2Zvcm1hdFZhbHVlKG9iajEpfSB0bzogJHtmb3JtYXRWYWx1ZShvYmoyKX1gO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheS5pc0FycmF5KG9iajEpIHx8IEFycmF5LmlzQXJyYXkob2JqMikpIHtcblx0XHRcdHJldHVybiBjdXN0b21BcnJheURpZmYoQXJyYXkuaXNBcnJheShvYmoxKSA/IG9iajEgOiBbXSwgQXJyYXkuaXNBcnJheShvYmoyKSA/IG9iajIgOiBbXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHsuLi5vYmoxLCAuLi5vYmoyfSkuZmlsdGVyKGEgPT4gIWEuc3RhcnRzV2l0aCgnX2lkJykgJiYgIWEuc3RhcnRzV2l0aCgnaWRfJykpLm1hcChrZXkgPT4ge1xuXHRcdFx0Y29uc3Qgb2JqMVZhbCA9IG9iajEgPyBvYmoxW2tleV0gOiB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBvYmoyVmFsID0gb2JqMiA/IG9iajJba2V5XSA6IHVuZGVmaW5lZDtcblx0XHRcdHJldHVybiBgJHt0b1RpdGxlQ2FzZShrZXkpfTogJHtmb3JtYXRPYmplY3REaWZmKG9iajFWYWwsIG9iajJWYWwpfWA7XG5cdFx0fSkuam9pbignLCAnKTtcblx0fTtcblxuXHQvLyBIYW5kbGUgZWFjaCBkaWZmIHR5cGVcblx0WydhZGRlZCcsICdkZWxldGVkJywgJ3VwZGF0ZWQnXS5mb3JFYWNoKGRpZmZUeXBlID0+IHtcblx0XHRpZiAoT2JqZWN0LmtleXMoZGlmZltkaWZmVHlwZV0pLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnN0IHVwZGF0ZXMgPSBPYmplY3Qua2V5cyhkaWZmW2RpZmZUeXBlXSlcblx0XHRcdFx0LmZpbHRlcihrZXkgPT4gZGlmZlR5cGUgPT09ICdhZGRlZCcgPyB0cnVlIDogKGRpZmZUeXBlID09PSAnZGVsZXRlZCcgPyAhZGlmZlsnYWRkZWQnXVtrZXldIDogIWRpZmZbJ2FkZGVkJ11ba2V5XSAmJiAhZGlmZlsnZGVsZXRlZCddW2tleV0pKVxuXHRcdFx0XHQuZmlsdGVyKGtleSA9PiAha2V5LnN0YXJ0c1dpdGgoJ19pZCcpICYmICFrZXkuc3RhcnRzV2l0aCgnaWRfJykpXG5cdFx0XHRcdC5tYXAoa2V5ID0+IGBcXG4ke3RvVGl0bGVDYXNlKGtleSl9OiAke2Zvcm1hdE9iamVjdERpZmYob2JqMVtrZXldLCBvYmoyW2tleV0pfWApXG5cdFx0XHRcdC5qb2luKCcsJyk7XG5cblx0XHRcdGRpZmZTdHJpbmcgKz0gdXBkYXRlcyA/IGAke3VwZGF0ZXN9YCA6ICcnO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGRpZmZTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNyb25TdHJpbmdGcm9tRGF0ZShkYXRlOiBEYXRlKSB7XG5cdHJldHVybiBkYXRlLmdldFNlY29uZHMoKSArICcgJyArIGRhdGUuZ2V0TWludXRlcygpICsgJyAnICsgZGF0ZS5nZXRIb3VycygpICsgJyAnICsgZGF0ZS5nZXREYXRlKCkgKyAnICcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnICcgKyBkYXRlLmdldERheSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gczJhYihzKSB7XG5cdGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuXHRsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG5cdGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7IHZpZXdbaV0gPSBzLmNoYXJDb2RlQXQoaSkgJiAweEZGOyB9XG5cdHJldHVybiBidWY7IFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwKHRhcmdldCwgLi4uc291cmNlcykge1xuXHRpZiAoIXNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG5cblx0aWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuXHRcdFx0aWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHt9IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuXHRcdFx0fSBcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogc291cmNlW2tleV0gfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1lcmdlRGVlcCh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufSJdfQ==
|