dts-backoffice-util 16.1.0 → 17.1.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/README.md +407 -334
- package/esm2022/dts-backoffice-util.mjs +4 -4
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +305 -305
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs +6 -6
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +208 -208
- package/esm2022/lib/dts-backoffice-util.module.mjs +54 -54
- package/esm2022/lib/interfaces/filter-range.interface.mjs +1 -1
- package/esm2022/lib/interfaces/totvs-response.interface.mjs +1 -1
- package/esm2022/lib/model/session-info.model.mjs +67 -67
- package/esm2022/lib/pipes/dts-date-format.pipe.mjs +20 -20
- package/esm2022/lib/services/breadcrumb-control.service.mjs +99 -99
- package/esm2022/lib/services/cache-params.service.mjs +25 -25
- package/esm2022/lib/services/menu-datasul.service.mjs +118 -118
- package/esm2022/lib/services/profile.service.mjs +55 -55
- package/esm2022/lib/services/report.service.mjs +57 -57
- package/esm2022/lib/services/session-info.service.mjs +36 -36
- package/esm2022/lib/services/translate.service.mjs +23 -23
- package/esm2022/lib/services/validate.service.mjs +42 -0
- package/esm2022/lib/utils/date.util.mjs +56 -56
- package/esm2022/lib/utils/disclaimer.util.mjs +490 -490
- package/esm2022/lib/utils/field-validation.util.mjs +179 -179
- package/esm2022/lib/utils/file.util.mjs +151 -151
- package/esm2022/lib/utils/filter-range.util.mjs +32 -32
- package/esm2022/lib/utils/generic-functions.utils.mjs +170 -170
- package/esm2022/public-api.mjs +35 -34
- package/fesm2022/dts-backoffice-util.mjs +2053 -2015
- package/fesm2022/dts-backoffice-util.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.d.ts +53 -53
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.d.ts +68 -68
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.d.ts +30 -30
- package/lib/dts-backoffice-util.module.d.ts +14 -14
- package/lib/interfaces/filter-range.interface.d.ts +18 -18
- package/lib/interfaces/totvs-response.interface.d.ts +4 -4
- package/lib/model/session-info.model.d.ts +40 -40
- package/lib/pipes/dts-date-format.pipe.d.ts +7 -7
- package/lib/services/breadcrumb-control.service.d.ts +18 -18
- package/lib/services/cache-params.service.d.ts +10 -10
- package/lib/services/menu-datasul.service.d.ts +27 -27
- package/lib/services/profile.service.d.ts +25 -25
- package/lib/services/report.service.d.ts +31 -31
- package/lib/services/session-info.service.d.ts +12 -12
- package/lib/services/translate.service.d.ts +8 -8
- package/lib/services/validate.service.d.ts +12 -0
- package/lib/utils/date.util.d.ts +9 -9
- package/lib/utils/disclaimer.util.d.ts +40 -40
- package/lib/utils/field-validation.util.d.ts +21 -21
- package/lib/utils/file.util.d.ts +23 -23
- package/lib/utils/filter-range.util.d.ts +7 -7
- package/lib/utils/generic-functions.utils.d.ts +24 -24
- package/package.json +5 -5
- package/public-api.d.ts +21 -20
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common/http";
|
|
6
|
-
export class UserLoginService {
|
|
7
|
-
constructor(http) {
|
|
8
|
-
this.http = http;
|
|
9
|
-
this.apiUrl = '/totvs-menu/rest/getSessionInfo';
|
|
10
|
-
this.userLogin = undefined;
|
|
11
|
-
}
|
|
12
|
-
getUserLogin() {
|
|
13
|
-
if (localStorage.getItem('username')) {
|
|
14
|
-
return of(localStorage.getItem('username'));
|
|
15
|
-
}
|
|
16
|
-
if (this.userLogin) {
|
|
17
|
-
return of(this.userLogin);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return this.http.get(`${this.apiUrl}`)
|
|
21
|
-
.pipe(map((response) => {
|
|
22
|
-
this.userLogin = response.userName;
|
|
23
|
-
return response.userName;
|
|
24
|
-
}));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
31
|
-
type: Injectable,
|
|
32
|
-
args: [{
|
|
33
|
-
providedIn: 'root'
|
|
34
|
-
}]
|
|
35
|
-
}], ctorParameters:
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
export class UserLoginService {
|
|
7
|
+
constructor(http) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
this.apiUrl = '/totvs-menu/rest/getSessionInfo';
|
|
10
|
+
this.userLogin = undefined;
|
|
11
|
+
}
|
|
12
|
+
getUserLogin() {
|
|
13
|
+
if (localStorage.getItem('username')) {
|
|
14
|
+
return of(localStorage.getItem('username'));
|
|
15
|
+
}
|
|
16
|
+
if (this.userLogin) {
|
|
17
|
+
return of(this.userLogin);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return this.http.get(`${this.apiUrl}`)
|
|
21
|
+
.pipe(map((response) => {
|
|
22
|
+
this.userLogin = response.userName;
|
|
23
|
+
return response.userName;
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: UserLoginService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: UserLoginService, providedIn: 'root' }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: UserLoginService, decorators: [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{
|
|
33
|
+
providedIn: 'root'
|
|
34
|
+
}]
|
|
35
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvc2VydmljZXMvc2Vzc2lvbi1pbmZvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS3JDLE1BQU0sT0FBTyxnQkFBZ0I7SUFLekIsWUFBbUIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUgxQixXQUFNLEdBQUcsaUNBQWlDLENBQUM7UUFDcEQsY0FBUyxHQUFHLFNBQVMsQ0FBQztJQUVpQixDQUFDO0lBRXhDLFlBQVk7UUFDUixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNaLENBQUM7SUFDTCxDQUFDO2lJQXJCUSxnQkFBZ0I7cUlBQWhCLGdCQUFnQixjQUZiLE1BQU07OzJGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IElTZXNzaW9uSW5mbyB9IGZyb20gJy4uL21vZGVsL3Nlc3Npb24taW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckxvZ2luU2VydmljZSB7XHJcblxyXG4gICAgcmVhZG9ubHkgYXBpVXJsID0gJy90b3R2cy1tZW51L3Jlc3QvZ2V0U2Vzc2lvbkluZm8nO1xyXG4gICAgdXNlckxvZ2luID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgICBnZXRVc2VyTG9naW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJuYW1lJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VybmFtZScpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVzZXJMb2dpbikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy51c2VyTG9naW4pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PElTZXNzaW9uSW5mbz4oYCR7dGhpcy5hcGlVcmx9YClcclxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJMb2dpbiA9IHJlc3BvbnNlLnVzZXJOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS51c2VyTmFtZTtcclxuICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class TranslateService {
|
|
4
|
-
static getSuportLanguage() {
|
|
5
|
-
return ['pt-BR', 'pt', 'en-US', 'en', 'es'];
|
|
6
|
-
}
|
|
7
|
-
static getDefaultCurrencyCode() {
|
|
8
|
-
return '$';
|
|
9
|
-
}
|
|
10
|
-
static getCurrentLanguage() {
|
|
11
|
-
const locale = localStorage.getItem('user.language') || navigator.language;
|
|
12
|
-
if (locale && this.getSuportLanguage().includes(locale)) {
|
|
13
|
-
return locale;
|
|
14
|
-
}
|
|
15
|
-
return 'en-US';
|
|
16
|
-
}
|
|
17
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
19
|
-
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
-
type: Injectable
|
|
22
|
-
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TranslateService {
|
|
4
|
+
static getSuportLanguage() {
|
|
5
|
+
return ['pt-BR', 'pt', 'en-US', 'en', 'es'];
|
|
6
|
+
}
|
|
7
|
+
static getDefaultCurrencyCode() {
|
|
8
|
+
return '$';
|
|
9
|
+
}
|
|
10
|
+
static getCurrentLanguage() {
|
|
11
|
+
const locale = localStorage.getItem('user.language') || navigator.language;
|
|
12
|
+
if (locale && this.getSuportLanguage().includes(locale)) {
|
|
13
|
+
return locale;
|
|
14
|
+
}
|
|
15
|
+
return 'en-US';
|
|
16
|
+
}
|
|
17
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TranslateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TranslateService }); }
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: TranslateService, decorators: [{
|
|
21
|
+
type: Injectable
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdHMtYmFja29mZmljZS11dGlsL3NyYy9saWIvc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixNQUFNLENBQUMsaUJBQWlCO1FBQ3BCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0I7UUFDekIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQjtRQUNyQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFFM0UsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFBQyxPQUFPLE1BQU0sQ0FBQztRQUFDLENBQUM7UUFFM0UsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztpSUFoQlEsZ0JBQWdCO3FJQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVTZXJ2aWNlIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0U3Vwb3J0TGFuZ3VhZ2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIFsncHQtQlInLCAncHQnLCAnZW4tVVMnLCAnZW4nLCAnZXMnXTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0RGVmYXVsdEN1cnJlbmN5Q29kZSgpIHtcclxuICAgICAgICByZXR1cm4gJyQnO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRDdXJyZW50TGFuZ3VhZ2UoKSB7XHJcbiAgICAgICAgY29uc3QgbG9jYWxlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXIubGFuZ3VhZ2UnKSB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2U7XHJcblxyXG4gICAgICAgIGlmIChsb2NhbGUgJiYgdGhpcy5nZXRTdXBvcnRMYW5ndWFnZSgpLmluY2x1ZGVzKGxvY2FsZSkpIHsgcmV0dXJuIGxvY2FsZTsgfVxyXG5cclxuICAgICAgICByZXR1cm4gJ2VuLVVTJztcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { lastValueFrom } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
export class ValidateService {
|
|
6
|
+
constructor(http) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
}
|
|
9
|
+
async validate(url, value) {
|
|
10
|
+
return await lastValueFrom(this.http.post(url, value));
|
|
11
|
+
}
|
|
12
|
+
updateFormFields(validation, fields) {
|
|
13
|
+
let changedField;
|
|
14
|
+
if (validation?.fields) {
|
|
15
|
+
validation.fields.forEach(validField => {
|
|
16
|
+
changedField = fields.find(field => field.property === validField.property);
|
|
17
|
+
if (changedField) {
|
|
18
|
+
Object.keys(validField).forEach(function (key) {
|
|
19
|
+
if (key !== 'property') {
|
|
20
|
+
changedField[key] = validField[key];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return fields;
|
|
27
|
+
}
|
|
28
|
+
updateFormValue(validation, value) {
|
|
29
|
+
if (validation?.value) {
|
|
30
|
+
Object.keys(validation.value).forEach(function (key) {
|
|
31
|
+
value[key] = validation.value[key];
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ValidateService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ValidateService }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ValidateService, decorators: [{
|
|
40
|
+
type: Injectable
|
|
41
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R0cy1iYWNrb2ZmaWNlLXV0aWwvc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBR3JDLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSSxDQUFDO0lBRXpDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLEtBQWdDO1FBQ3hELE9BQU8sTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQTBCLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQyxFQUFFLE1BQWlDO1FBQ25GLElBQUksWUFBaUIsQ0FBQztRQUV0QixJQUFHLFVBQVUsRUFBRSxNQUFNLEVBQUMsQ0FBQztZQUNuQixVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDbkMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUUsSUFBRyxZQUFZLEVBQUMsQ0FBQztvQkFDYixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFTLEdBQUc7d0JBQ3hDLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBQyxDQUFDOzRCQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO3dCQUN2QyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQW1DLEVBQUUsS0FBVTtRQUMzRCxJQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBUyxHQUFHO2dCQUM5QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO2lJQWhDUSxlQUFlO3FJQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBvRHluYW1pY0Zvcm1GaWVsZCwgUG9EeW5hbWljRm9ybUZpZWxkQ2hhbmdlZCwgUG9EeW5hbWljRm9ybVZhbGlkYXRpb24gfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRlU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxyXG5cclxuICAgIGFzeW5jIHZhbGlkYXRlKHVybDogc3RyaW5nLCB2YWx1ZTogUG9EeW5hbWljRm9ybUZpZWxkQ2hhbmdlZCkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0PFBvRHluYW1pY0Zvcm1WYWxpZGF0aW9uPih1cmwsIHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRm9ybUZpZWxkcyh2YWxpZGF0aW9uOiBQb0R5bmFtaWNGb3JtVmFsaWRhdGlvbiwgZmllbGRzOiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+KSB7XHJcbiAgICAgICAgbGV0IGNoYW5nZWRGaWVsZDogYW55O1xyXG5cclxuICAgICAgICBpZih2YWxpZGF0aW9uPy5maWVsZHMpe1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmZpZWxkcy5mb3JFYWNoKHZhbGlkRmllbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2hhbmdlZEZpZWxkID0gZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQucHJvcGVydHkgPT09IHZhbGlkRmllbGQucHJvcGVydHkpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2hhbmdlZEZpZWxkKXtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWxpZEZpZWxkKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAncHJvcGVydHknKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZFtrZXldID0gdmFsaWRGaWVsZFtrZXldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWVsZHM7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRm9ybVZhbHVlKHZhbGlkYXRpb246IFBvRHluYW1pY0Zvcm1WYWxpZGF0aW9uLCB2YWx1ZTogYW55KTogYW55e1xyXG4gICAgICAgIGlmKHZhbGlkYXRpb24/LnZhbHVlKXtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXModmFsaWRhdGlvbi52YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSB2YWxpZGF0aW9uLnZhbHVlW2tleV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0gICBcclxufVxyXG4iXX0=
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Versão: 1.000
|
|
3
|
-
Data Criação: 18/04/2019
|
|
4
|
-
*/
|
|
5
|
-
export class DateUtil {
|
|
6
|
-
constructor() { }
|
|
7
|
-
/* Transforma data para o padrão YYYY-MM-DD */
|
|
8
|
-
static dateToQueryParam(date) {
|
|
9
|
-
const iDay = date.getDate();
|
|
10
|
-
const iMonth = date.getMonth() + 1;
|
|
11
|
-
const iYear = date.getFullYear();
|
|
12
|
-
return `${iYear}-${this.pad(iMonth)}-${this.pad(iDay)}`;
|
|
13
|
-
}
|
|
14
|
-
/* Transforma data no padrão YYYY-MM-DD para DATE */
|
|
15
|
-
static queryParamToDate(param) {
|
|
16
|
-
const iDay = +param.split('-')[2];
|
|
17
|
-
const iMonth = +param.split('-')[1];
|
|
18
|
-
const iYear = +param.split('-')[0];
|
|
19
|
-
return new Date(iYear, iMonth - 1, iDay);
|
|
20
|
-
}
|
|
21
|
-
/* Valida se foi informado uma data válida */
|
|
22
|
-
static isValidDate(date) {
|
|
23
|
-
return date instanceof Date && !isNaN(date.getTime());
|
|
24
|
-
}
|
|
25
|
-
/* Ajusta a data retornando o padrão DATE */
|
|
26
|
-
static ajustDate(param) {
|
|
27
|
-
if (param instanceof Date) {
|
|
28
|
-
return param;
|
|
29
|
-
}
|
|
30
|
-
if (!param) {
|
|
31
|
-
return param;
|
|
32
|
-
}
|
|
33
|
-
return this.queryParamToDate(param.split('T')[0]);
|
|
34
|
-
}
|
|
35
|
-
/* Ajusta a data para o padrão DATE - utilizada nos construtores dos modelos */
|
|
36
|
-
static ajustDateToModel(values = {}, fieldName) {
|
|
37
|
-
if (values.hasOwnProperty(fieldName) && (values[fieldName])) {
|
|
38
|
-
if (values[fieldName].indexOf('T') >= 0) {
|
|
39
|
-
return new Date(values[fieldName]);
|
|
40
|
-
}
|
|
41
|
-
const iDay = +values[fieldName].split('-')[2];
|
|
42
|
-
const iMonth = +values[fieldName].split('-')[1];
|
|
43
|
-
const iYear = +values[fieldName].split('-')[0];
|
|
44
|
-
return new Date(iYear, iMonth - 1, iDay);
|
|
45
|
-
}
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
/* Adicona zero a esquerda do número */
|
|
49
|
-
static pad(number) {
|
|
50
|
-
if (number < 10) {
|
|
51
|
-
return '0' + number;
|
|
52
|
-
}
|
|
53
|
-
return number;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
Versão: 1.000
|
|
3
|
+
Data Criação: 18/04/2019
|
|
4
|
+
*/
|
|
5
|
+
export class DateUtil {
|
|
6
|
+
constructor() { }
|
|
7
|
+
/* Transforma data para o padrão YYYY-MM-DD */
|
|
8
|
+
static dateToQueryParam(date) {
|
|
9
|
+
const iDay = date.getDate();
|
|
10
|
+
const iMonth = date.getMonth() + 1;
|
|
11
|
+
const iYear = date.getFullYear();
|
|
12
|
+
return `${iYear}-${this.pad(iMonth)}-${this.pad(iDay)}`;
|
|
13
|
+
}
|
|
14
|
+
/* Transforma data no padrão YYYY-MM-DD para DATE */
|
|
15
|
+
static queryParamToDate(param) {
|
|
16
|
+
const iDay = +param.split('-')[2];
|
|
17
|
+
const iMonth = +param.split('-')[1];
|
|
18
|
+
const iYear = +param.split('-')[0];
|
|
19
|
+
return new Date(iYear, iMonth - 1, iDay);
|
|
20
|
+
}
|
|
21
|
+
/* Valida se foi informado uma data válida */
|
|
22
|
+
static isValidDate(date) {
|
|
23
|
+
return date instanceof Date && !isNaN(date.getTime());
|
|
24
|
+
}
|
|
25
|
+
/* Ajusta a data retornando o padrão DATE */
|
|
26
|
+
static ajustDate(param) {
|
|
27
|
+
if (param instanceof Date) {
|
|
28
|
+
return param;
|
|
29
|
+
}
|
|
30
|
+
if (!param) {
|
|
31
|
+
return param;
|
|
32
|
+
}
|
|
33
|
+
return this.queryParamToDate(param.split('T')[0]);
|
|
34
|
+
}
|
|
35
|
+
/* Ajusta a data para o padrão DATE - utilizada nos construtores dos modelos */
|
|
36
|
+
static ajustDateToModel(values = {}, fieldName) {
|
|
37
|
+
if (values.hasOwnProperty(fieldName) && (values[fieldName])) {
|
|
38
|
+
if (values[fieldName].indexOf('T') >= 0) {
|
|
39
|
+
return new Date(values[fieldName]);
|
|
40
|
+
}
|
|
41
|
+
const iDay = +values[fieldName].split('-')[2];
|
|
42
|
+
const iMonth = +values[fieldName].split('-')[1];
|
|
43
|
+
const iYear = +values[fieldName].split('-')[0];
|
|
44
|
+
return new Date(iYear, iMonth - 1, iDay);
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
/* Adicona zero a esquerda do número */
|
|
49
|
+
static pad(number) {
|
|
50
|
+
if (number < 10) {
|
|
51
|
+
return '0' + number;
|
|
52
|
+
}
|
|
53
|
+
return number;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHRzLWJhY2tvZmZpY2UtdXRpbC9zcmMvbGliL3V0aWxzL2RhdGUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0VBR0U7QUFFRixNQUFNLE9BQU8sUUFBUTtJQUVqQixnQkFDSSxDQUFDO0lBRUwsOENBQThDO0lBQzlDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFVO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqQyxPQUFPLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWE7UUFDakMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBVTtRQUN6QixPQUFPLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPLEtBQUssQ0FBQztRQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQUMsT0FBTyxLQUFLLENBQUM7UUFBQyxDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLEVBQUUsU0FBaUI7UUFDMUQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNO1FBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZCxPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcblZlcnPDo286IDEuMDAwXHJcbkRhdGEgQ3JpYcOnw6NvOiAxOC8wNC8yMDE5XHJcbiovXHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZVV0aWwge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICAvKiBUcmFuc2Zvcm1hIGRhdGEgcGFyYSBvIHBhZHLDo28gWVlZWS1NTS1ERCAqL1xyXG4gICAgc3RhdGljIGRhdGVUb1F1ZXJ5UGFyYW0oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgaURheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IGlNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgICAgY29uc3QgaVllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBgJHtpWWVhcn0tJHt0aGlzLnBhZChpTW9udGgpfS0ke3RoaXMucGFkKGlEYXkpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgLyogVHJhbnNmb3JtYSBkYXRhIG5vIHBhZHLDo28gWVlZWS1NTS1ERCBwYXJhIERBVEUgKi9cclxuICAgIHN0YXRpYyBxdWVyeVBhcmFtVG9EYXRlKHBhcmFtOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgICAgICBjb25zdCBpRGF5ID0gK3BhcmFtLnNwbGl0KCctJylbMl07XHJcbiAgICAgICAgY29uc3QgaU1vbnRoID0gK3BhcmFtLnNwbGl0KCctJylbMV07XHJcbiAgICAgICAgY29uc3QgaVllYXIgPSArcGFyYW0uc3BsaXQoJy0nKVswXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGlZZWFyLCBpTW9udGggLSAxLCBpRGF5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBWYWxpZGEgc2UgZm9pIGluZm9ybWFkbyB1bWEgZGF0YSB2w6FsaWRhICovXHJcbiAgICBzdGF0aWMgaXNWYWxpZERhdGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIEFqdXN0YSBhIGRhdGEgcmV0b3JuYW5kbyBvIHBhZHLDo28gREFURSAqL1xyXG4gICAgc3RhdGljIGFqdXN0RGF0ZShwYXJhbTogYW55KTogRGF0ZSB7XHJcbiAgICAgICAgaWYgKHBhcmFtIGluc3RhbmNlb2YgRGF0ZSkgeyByZXR1cm4gcGFyYW07IH1cclxuICAgICAgICBpZiAoIXBhcmFtKSB7IHJldHVybiBwYXJhbTsgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeVBhcmFtVG9EYXRlKHBhcmFtLnNwbGl0KCdUJylbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIEFqdXN0YSBhIGRhdGEgcGFyYSBvIHBhZHLDo28gREFURSAtIHV0aWxpemFkYSBub3MgY29uc3RydXRvcmVzIGRvcyBtb2RlbG9zICovXHJcbiAgICBzdGF0aWMgYWp1c3REYXRlVG9Nb2RlbCh2YWx1ZXM6IE9iamVjdCA9IHt9LCBmaWVsZE5hbWU6IHN0cmluZyk6IERhdGUge1xyXG4gICAgICAgIGlmICh2YWx1ZXMuaGFzT3duUHJvcGVydHkoZmllbGROYW1lKSAmJiAodmFsdWVzW2ZpZWxkTmFtZV0pKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbZmllbGROYW1lXS5pbmRleE9mKCdUJykgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlc1tmaWVsZE5hbWVdKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgaURheSA9ICt2YWx1ZXNbZmllbGROYW1lXS5zcGxpdCgnLScpWzJdO1xyXG4gICAgICAgICAgICBjb25zdCBpTW9udGggPSArdmFsdWVzW2ZpZWxkTmFtZV0uc3BsaXQoJy0nKVsxXTtcclxuICAgICAgICAgICAgY29uc3QgaVllYXIgPSArdmFsdWVzW2ZpZWxkTmFtZV0uc3BsaXQoJy0nKVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGlZZWFyLCBpTW9udGggLSAxLCBpRGF5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIEFkaWNvbmEgemVybyBhIGVzcXVlcmRhIGRvIG7Dum1lcm8gKi9cclxuICAgIHN0YXRpYyBwYWQobnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKG51bWJlciA8IDEwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudW1iZXI7XHJcbiAgICB9XHJcbn1cclxuIl19
|