@seniorsistemas/components-ai 0.0.0-master-d4a804fe
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/CHANGELOG.md +101 -0
- package/CONTRIBUTING.md +317 -0
- package/README.md +161 -0
- package/docs/API.md +486 -0
- package/docs/COMPONENTS.md +272 -0
- package/docs/EXAMPLES.md +559 -0
- package/docs/MIGRATION.md +367 -0
- package/esm2022/lib/angular-components.module.mjs +25 -0
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +121 -0
- package/esm2022/lib/components/bulk-delete-dialog/bulk-delete-dialog.component.mjs +176 -0
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +625 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-date.component.mjs +86 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-dropdown.component.mjs +103 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +599 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-number.component.mjs +92 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-text.component.mjs +163 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-textarea.component.mjs +81 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.mjs +93 -0
- package/esm2022/lib/components/dynamic-form/fields/index.mjs +8 -0
- package/esm2022/lib/components/dynamic-form/models/dynamic-form.models.mjs +2 -0
- package/esm2022/lib/components/export-dialog/export-dialog.component.mjs +219 -0
- package/esm2022/lib/config/translation.config.mjs +70 -0
- package/esm2022/lib/directives/cep-mask.directive.mjs +79 -0
- package/esm2022/lib/directives/document-mask.directive.mjs +62 -0
- package/esm2022/lib/directives/phone-mask.directive.mjs +59 -0
- package/esm2022/lib/interceptors/api.interceptor.mjs +55 -0
- package/esm2022/lib/models/base-entity.interface.mjs +2 -0
- package/esm2022/lib/models/entity-list.config.mjs +2 -0
- package/esm2022/lib/pipes/translate.pipe.mjs +74 -0
- package/esm2022/lib/services/auth.service.mjs +169 -0
- package/esm2022/lib/services/cookie.service.mjs +90 -0
- package/esm2022/lib/services/entity.service.mjs +208 -0
- package/esm2022/lib/services/mask.service.mjs +121 -0
- package/esm2022/lib/services/permission.service.mjs +180 -0
- package/esm2022/lib/services/senior-token.service.mjs +209 -0
- package/esm2022/lib/services/theme.service.mjs +85 -0
- package/esm2022/lib/services/translation.service.mjs +232 -0
- package/esm2022/public-api.mjs +90 -0
- package/esm2022/seniorsistemas-components-ai.mjs +5 -0
- package/fesm2022/seniorsistemas-components-ai.mjs +4006 -0
- package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/angular-components.module.d.ts +13 -0
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +23 -0
- package/lib/components/bulk-delete-dialog/bulk-delete-dialog.component.d.ts +46 -0
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +97 -0
- package/lib/components/dynamic-form/fields/dynamic-field-date.component.d.ts +16 -0
- package/lib/components/dynamic-form/fields/dynamic-field-dropdown.component.d.ts +17 -0
- package/lib/components/dynamic-form/fields/dynamic-field-lookup.component.d.ts +52 -0
- package/lib/components/dynamic-form/fields/dynamic-field-number.component.d.ts +16 -0
- package/lib/components/dynamic-form/fields/dynamic-field-text.component.d.ts +17 -0
- package/lib/components/dynamic-form/fields/dynamic-field-textarea.component.d.ts +16 -0
- package/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.d.ts +20 -0
- package/lib/components/dynamic-form/fields/index.d.ts +7 -0
- package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +178 -0
- package/lib/components/export-dialog/export-dialog.component.d.ts +56 -0
- package/lib/config/translation.config.d.ts +24 -0
- package/lib/directives/cep-mask.directive.d.ts +13 -0
- package/lib/directives/document-mask.directive.d.ts +19 -0
- package/lib/directives/phone-mask.directive.d.ts +11 -0
- package/lib/interceptors/api.interceptor.d.ts +2 -0
- package/lib/models/base-entity.interface.d.ts +7 -0
- package/lib/models/entity-list.config.d.ts +161 -0
- package/lib/pipes/translate.pipe.d.ts +21 -0
- package/lib/services/auth.service.d.ts +82 -0
- package/lib/services/cookie.service.d.ts +31 -0
- package/lib/services/entity.service.d.ts +99 -0
- package/lib/services/mask.service.d.ts +36 -0
- package/lib/services/permission.service.d.ts +91 -0
- package/lib/services/senior-token.service.d.ts +70 -0
- package/lib/services/theme.service.d.ts +16 -0
- package/lib/services/translation.service.d.ts +54 -0
- package/package.json +53 -0
- package/public-api.d.ts +17 -0
- package/src/lib/styles/entity-list.shared.scss +383 -0
- package/src/lib/styles/index.scss +10 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Directive, HostListener } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PhoneMaskDirective {
|
|
4
|
+
el;
|
|
5
|
+
constructor(el) {
|
|
6
|
+
this.el = el;
|
|
7
|
+
}
|
|
8
|
+
onInput(event) {
|
|
9
|
+
const value = event.target.value;
|
|
10
|
+
this.applyPhoneMask(value);
|
|
11
|
+
}
|
|
12
|
+
onBlur(event) {
|
|
13
|
+
const value = event.target.value;
|
|
14
|
+
this.applyPhoneMask(value);
|
|
15
|
+
}
|
|
16
|
+
applyPhoneMask(value) {
|
|
17
|
+
if (!value)
|
|
18
|
+
return;
|
|
19
|
+
// Remove todos os caracteres não numéricos
|
|
20
|
+
const numbers = value.replace(/\D/g, '');
|
|
21
|
+
let maskedValue = '';
|
|
22
|
+
if (numbers.length <= 10) {
|
|
23
|
+
// Telefone fixo: (00) 0000-0000
|
|
24
|
+
maskedValue = numbers.replace(/(\d{2})(\d{4})(\d{4})/, '($1) $2-$3');
|
|
25
|
+
}
|
|
26
|
+
else if (numbers.length === 11) {
|
|
27
|
+
// Celular: (00) 00000-0000
|
|
28
|
+
maskedValue = numbers.replace(/(\d{2})(\d{5})(\d{4})/, '($1) $2-$3');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Limitar a 11 dígitos
|
|
32
|
+
const limitedNumbers = numbers.substring(0, 11);
|
|
33
|
+
maskedValue = limitedNumbers.replace(/(\d{2})(\d{5})(\d{4})/, '($1) $2-$3');
|
|
34
|
+
}
|
|
35
|
+
// Atualizar o valor do input apenas se mudou
|
|
36
|
+
if (maskedValue && maskedValue !== value) {
|
|
37
|
+
this.el.nativeElement.value = maskedValue;
|
|
38
|
+
// Disparar evento de input para atualizar o FormControl
|
|
39
|
+
const inputEvent = new Event('input', { bubbles: true });
|
|
40
|
+
this.el.nativeElement.dispatchEvent(inputEvent);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PhoneMaskDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: PhoneMaskDirective, isStandalone: true, selector: "[siaPhoneMask]", host: { listeners: { "input": "onInput($event)", "blur": "onBlur($event)" } }, ngImport: i0 });
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PhoneMaskDirective, decorators: [{
|
|
47
|
+
type: Directive,
|
|
48
|
+
args: [{
|
|
49
|
+
selector: '[siaPhoneMask]',
|
|
50
|
+
standalone: true
|
|
51
|
+
}]
|
|
52
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { onInput: [{
|
|
53
|
+
type: HostListener,
|
|
54
|
+
args: ['input', ['$event']]
|
|
55
|
+
}], onBlur: [{
|
|
56
|
+
type: HostListener,
|
|
57
|
+
args: ['blur', ['$event']]
|
|
58
|
+
}] } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvZGlyZWN0aXZlcy9waG9uZS1tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLGtCQUFrQjtJQUVUO0lBQXBCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUcsQ0FBQztJQUd0QyxPQUFPLENBQUMsS0FBVTtRQUNoQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFHRCxNQUFNLENBQUMsS0FBVTtRQUNmLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUVuQiwyQ0FBMkM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN6QixnQ0FBZ0M7WUFDaEMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqQywyQkFBMkI7WUFDM0IsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDTix1QkFBdUI7WUFDdkIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsV0FBVyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUVELDZDQUE2QztRQUM3QyxJQUFJLFdBQVcsSUFBSSxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztZQUUxQyx3REFBd0Q7WUFDeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO3dHQTVDVSxrQkFBa0I7NEZBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0VBTUMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPakMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzaWFQaG9uZU1hc2tdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZU1hc2tEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmFwcGx5UGhvbmVNYXNrKHZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInLCBbJyRldmVudCddKVxuICBvbkJsdXIoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuYXBwbHlQaG9uZU1hc2sodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVBob25lTWFzayh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgLy8gUmVtb3ZlIHRvZG9zIG9zIGNhcmFjdGVyZXMgbsOjbyBudW3DqXJpY29zXG4gICAgY29uc3QgbnVtYmVycyA9IHZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgXG4gICAgbGV0IG1hc2tlZFZhbHVlID0gJyc7XG5cbiAgICBpZiAobnVtYmVycy5sZW5ndGggPD0gMTApIHtcbiAgICAgIC8vIFRlbGVmb25lIGZpeG86ICgwMCkgMDAwMC0wMDAwXG4gICAgICBtYXNrZWRWYWx1ZSA9IG51bWJlcnMucmVwbGFjZSgvKFxcZHsyfSkoXFxkezR9KShcXGR7NH0pLywgJygkMSkgJDItJDMnKTtcbiAgICB9IGVsc2UgaWYgKG51bWJlcnMubGVuZ3RoID09PSAxMSkge1xuICAgICAgLy8gQ2VsdWxhcjogKDAwKSAwMDAwMC0wMDAwXG4gICAgICBtYXNrZWRWYWx1ZSA9IG51bWJlcnMucmVwbGFjZSgvKFxcZHsyfSkoXFxkezV9KShcXGR7NH0pLywgJygkMSkgJDItJDMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGltaXRhciBhIDExIGTDrWdpdG9zXG4gICAgICBjb25zdCBsaW1pdGVkTnVtYmVycyA9IG51bWJlcnMuc3Vic3RyaW5nKDAsIDExKTtcbiAgICAgIG1hc2tlZFZhbHVlID0gbGltaXRlZE51bWJlcnMucmVwbGFjZSgvKFxcZHsyfSkoXFxkezV9KShcXGR7NH0pLywgJygkMSkgJDItJDMnKTtcbiAgICB9XG5cbiAgICAvLyBBdHVhbGl6YXIgbyB2YWxvciBkbyBpbnB1dCBhcGVuYXMgc2UgbXVkb3VcbiAgICBpZiAobWFza2VkVmFsdWUgJiYgbWFza2VkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBtYXNrZWRWYWx1ZTtcbiAgICAgIFxuICAgICAgLy8gRGlzcGFyYXIgZXZlbnRvIGRlIGlucHV0IHBhcmEgYXR1YWxpemFyIG8gRm9ybUNvbnRyb2xcbiAgICAgIGNvbnN0IGlucHV0RXZlbnQgPSBuZXcgRXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlIH0pO1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQoaW5wdXRFdmVudCk7XG4gICAgfVxuICB9XG59Il19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { catchError, throwError } from 'rxjs';
|
|
4
|
+
import { AuthService } from '../services/auth.service';
|
|
5
|
+
export const apiInterceptor = (req, next) => {
|
|
6
|
+
const authService = inject(AuthService);
|
|
7
|
+
const router = inject(Router);
|
|
8
|
+
// Get the access token, token type, and base URL
|
|
9
|
+
const accessToken = authService.getAccessToken();
|
|
10
|
+
const tokenType = authService.getTokenType();
|
|
11
|
+
const baseUrl = authService.getApiBaseUrl();
|
|
12
|
+
let modifiedReq = req;
|
|
13
|
+
// Add Authorization header if token exists
|
|
14
|
+
if (accessToken && tokenType) {
|
|
15
|
+
const authHeader = `${tokenType} ${accessToken}`;
|
|
16
|
+
modifiedReq = modifiedReq.clone({
|
|
17
|
+
setHeaders: {
|
|
18
|
+
Authorization: authHeader
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
// Prepend base URL if it exists and the request URL is relative
|
|
23
|
+
if (baseUrl && !isAbsoluteUrl(modifiedReq.url)) {
|
|
24
|
+
const fullUrl = combineUrls(baseUrl, modifiedReq.url);
|
|
25
|
+
modifiedReq = modifiedReq.clone({
|
|
26
|
+
url: fullUrl
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return next(modifiedReq).pipe(catchError((error) => {
|
|
30
|
+
// Handle 401 Unauthorized errors
|
|
31
|
+
if (error.status === 401) {
|
|
32
|
+
// Redirect to forbidden route
|
|
33
|
+
router.navigate(['/forbidden']);
|
|
34
|
+
}
|
|
35
|
+
// Re-throw the error so other error handlers can process it
|
|
36
|
+
return throwError(() => error);
|
|
37
|
+
}));
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Check if URL is absolute
|
|
41
|
+
*/
|
|
42
|
+
function isAbsoluteUrl(url) {
|
|
43
|
+
return /^https?:\/\//.test(url);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Combine base URL with relative URL
|
|
47
|
+
*/
|
|
48
|
+
function combineUrls(baseUrl, relativeUrl) {
|
|
49
|
+
// Remove trailing slash from base URL
|
|
50
|
+
const cleanBaseUrl = baseUrl.replace(/\/$/, '');
|
|
51
|
+
// Remove leading slash from relative URL
|
|
52
|
+
const cleanRelativeUrl = relativeUrl.replace(/^\//, '');
|
|
53
|
+
return `${cleanBaseUrl}/${cleanRelativeUrl}`;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2ludGVyY2VwdG9ycy9hcGkuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUNsRyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTlCLGlEQUFpRDtJQUNqRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDakQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUU1QyxJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFFdEIsMkNBQTJDO0lBQzNDLElBQUksV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLEdBQUcsU0FBUyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2pELFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzlCLFVBQVUsRUFBRTtnQkFDVixhQUFhLEVBQUUsVUFBVTthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDOUIsR0FBRyxFQUFFLE9BQU87U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUMzQixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7UUFDdEMsaUNBQWlDO1FBQ2pDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN6Qiw4QkFBOEI7WUFDOUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELDREQUE0RDtRQUM1RCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxHQUFXO0lBQ2hDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxPQUFlLEVBQUUsV0FBbUI7SUFDdkQsc0NBQXNDO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRWhELHlDQUF5QztJQUN6QyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXhELE9BQU8sR0FBRyxZQUFZLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yRm4sIEh0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlckZuLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IGFwaUludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIFxuICAvLyBHZXQgdGhlIGFjY2VzcyB0b2tlbiwgdG9rZW4gdHlwZSwgYW5kIGJhc2UgVVJMXG4gIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgY29uc3QgdG9rZW5UeXBlID0gYXV0aFNlcnZpY2UuZ2V0VG9rZW5UeXBlKCk7XG4gIGNvbnN0IGJhc2VVcmwgPSBhdXRoU2VydmljZS5nZXRBcGlCYXNlVXJsKCk7XG4gIFxuICBsZXQgbW9kaWZpZWRSZXEgPSByZXE7XG5cbiAgLy8gQWRkIEF1dGhvcml6YXRpb24gaGVhZGVyIGlmIHRva2VuIGV4aXN0c1xuICBpZiAoYWNjZXNzVG9rZW4gJiYgdG9rZW5UeXBlKSB7XG4gICAgY29uc3QgYXV0aEhlYWRlciA9IGAke3Rva2VuVHlwZX0gJHthY2Nlc3NUb2tlbn1gO1xuICAgIG1vZGlmaWVkUmVxID0gbW9kaWZpZWRSZXEuY2xvbmUoe1xuICAgICAgc2V0SGVhZGVyczoge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBhdXRoSGVhZGVyXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBQcmVwZW5kIGJhc2UgVVJMIGlmIGl0IGV4aXN0cyBhbmQgdGhlIHJlcXVlc3QgVVJMIGlzIHJlbGF0aXZlXG4gIGlmIChiYXNlVXJsICYmICFpc0Fic29sdXRlVXJsKG1vZGlmaWVkUmVxLnVybCkpIHtcbiAgICBjb25zdCBmdWxsVXJsID0gY29tYmluZVVybHMoYmFzZVVybCwgbW9kaWZpZWRSZXEudXJsKTtcbiAgICBtb2RpZmllZFJlcSA9IG1vZGlmaWVkUmVxLmNsb25lKHtcbiAgICAgIHVybDogZnVsbFVybFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5leHQobW9kaWZpZWRSZXEpLnBpcGUoXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyBIYW5kbGUgNDAxIFVuYXV0aG9yaXplZCBlcnJvcnNcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAvLyBSZWRpcmVjdCB0byBmb3JiaWRkZW4gcm91dGVcbiAgICAgICAgcm91dGVyLm5hdmlnYXRlKFsnL2ZvcmJpZGRlbiddKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gUmUtdGhyb3cgdGhlIGVycm9yIHNvIG90aGVyIGVycm9yIGhhbmRsZXJzIGNhbiBwcm9jZXNzIGl0XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgfSlcbiAgKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgVVJMIGlzIGFic29sdXRlXG4gKi9cbmZ1bmN0aW9uIGlzQWJzb2x1dGVVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eaHR0cHM/OlxcL1xcLy8udGVzdCh1cmwpO1xufVxuXG4vKipcbiAqIENvbWJpbmUgYmFzZSBVUkwgd2l0aCByZWxhdGl2ZSBVUkxcbiAqL1xuZnVuY3Rpb24gY29tYmluZVVybHMoYmFzZVVybDogc3RyaW5nLCByZWxhdGl2ZVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoIGZyb20gYmFzZSBVUkxcbiAgY29uc3QgY2xlYW5CYXNlVXJsID0gYmFzZVVybC5yZXBsYWNlKC9cXC8kLywgJycpO1xuICBcbiAgLy8gUmVtb3ZlIGxlYWRpbmcgc2xhc2ggZnJvbSByZWxhdGl2ZSBVUkxcbiAgY29uc3QgY2xlYW5SZWxhdGl2ZVVybCA9IHJlbGF0aXZlVXJsLnJlcGxhY2UoL15cXC8vLCAnJyk7XG4gIFxuICByZXR1cm4gYCR7Y2xlYW5CYXNlVXJsfS8ke2NsZWFuUmVsYXRpdmVVcmx9YDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHkuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL21vZGVscy9iYXNlLWVudGl0eS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eSB7XG4gIGNyZWF0ZWRCeT86IHN0cmluZztcbiAgY3JlYXRlZEF0PzogRGF0ZTtcbiAgY2hhbmdlZEJ5Pzogc3RyaW5nO1xuICBjaGFuZ2VkQXQ/OiBEYXRlO1xuICBjdXN0b20/OiBhbnk7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpc3QuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL21vZGVscy9lbnRpdHktbGlzdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBDb2x1bW4gY29uZmlndXJhdGlvbiBmb3IgZW50aXR5IGxpc3QgdGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5Db25maWcge1xuICBmaWVsZDogc3RyaW5nO1xuICBoZWFkZXI6IHN0cmluZztcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICB3aWR0aD86IHN0cmluZztcbiAgdHlwZT86ICd0ZXh0JyB8ICdudW1iZXInIHwgJ3N0YXR1cycgfCAnY3VzdG9tJztcbiAgY3VzdG9tVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG4vKipcbiAqIExvb2t1cCBjb2x1bW4gY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cENvbHVtbiB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGhlYWRlcjogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgdHlwZT86ICd0ZXh0JyB8ICdudW1iZXInOyAvLyBUeXBlIG9mIHRoZSBmaWVsZCBmb3IgZmlsdGVyaW5nXG59XG5cbi8qKlxuICogUmVzcG9uc2l2ZSBzaXplIGNvbmZpZ3VyYXRpb24gZm9yIGZpbHRlciBmaWVsZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJGaWVsZFNpemUge1xuICB4cz86IG51bWJlcjsgLy8gRXh0cmEgc21hbGwgc2NyZWVucyAoPDU3NnB4KVxuICBzbT86IG51bWJlcjsgLy8gU21hbGwgc2NyZWVucyAo4omlNTc2cHgpXG4gIG1kPzogbnVtYmVyOyAvLyBNZWRpdW0gc2NyZWVucyAo4omlNzY4cHgpXG4gIGxnPzogbnVtYmVyOyAvLyBMYXJnZSBzY3JlZW5zICjiiaU5OTJweClcbiAgeGw/OiBudW1iZXI7IC8vIEV4dHJhIGxhcmdlIHNjcmVlbnMgKOKJpTEyMDBweClcbn1cblxuLyoqXG4gKiBGaWx0ZXIgc2VjdGlvbiBjb25maWd1cmF0aW9uIGZvciBncm91cGluZyBmaWx0ZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyU2VjdGlvbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGZpbHRlcnM6IEZpbHRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEZpbHRlciBjb25maWd1cmF0aW9uIGZvciBlbnRpdHkgbGlzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNvbmZpZyB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHR5cGU6ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2Ryb3Bkb3duJyB8ICdsb29rdXAnIHwgJ2RhdGUnO1xuICBvcHRpb25zPzogYW55W107XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvcHRpb25MYWJlbD86IHN0cmluZztcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTsgLy8gRGVmYXVsdCB2YWx1ZSBmb3IgZmlsdGVyIGZpZWxkXG4gIGRpc2FibGVkPzogYm9vbGVhbjsgLy8gU3RhdGljIGRpc2FibGVkIHN0YXRlXG4gIG1pbj86IG51bWJlcjsgLy8gRm9yIG51bWJlciBpbnB1dHNcbiAgbWF4PzogbnVtYmVyOyAvLyBGb3IgbnVtYmVyIGlucHV0c1xuICBkaXNhYmxlZFdoZW4/OiB7IC8vIENvbmRpdGlvbmFsIGRpc2FibGVkIHN0YXRlXG4gICAgZmllbGQ6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xuICB9O1xuICAvLyBMYXlvdXQgcHJvcGVydGllc1xuICBjb2xzcGFuPzogbnVtYmVyOyAvLyBOdW1iZXIgb2YgY29sdW1ucyB0byBzcGFuICgxLTEyLCBkZWZhdWx0OiA2KVxuICBzaXplPzogRmlsdGVyRmllbGRTaXplOyAvLyBSZXNwb25zaXZlIHNpemVzIG9iamVjdFxuICBjb2xzcGFuWHM/OiBudW1iZXI7IC8vIERlcHJlY2F0ZWQ6IHVzZSBzaXplLnhzXG4gIGNvbHNwYW5TbT86IG51bWJlcjsgLy8gRGVwcmVjYXRlZDogdXNlIHNpemUuc21cbiAgY29sc3Bhbk1kPzogbnVtYmVyOyAvLyBEZXByZWNhdGVkOiB1c2Ugc2l6ZS5tZFxuICBjb2xzcGFuTGc/OiBudW1iZXI7IC8vIERlcHJlY2F0ZWQ6IHVzZSBzaXplLmxnXG4gIGNvbHNwYW5YbD86IG51bWJlcjsgLy8gRGVwcmVjYXRlZDogdXNlIHNpemUueGxcbiAgLy8gTG9va3VwIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgbG9va3VwU2VydmljZT86IGFueTsgLy8gU2VydmljZSB0byBmZXRjaCBsb29rdXAgZGF0YVxuICBsb29rdXBEaXNwbGF5RmllbGQ/OiBzdHJpbmc7IC8vIEZpZWxkIHRvIGRpc3BsYXkgaW4gdGhlIGxvb2t1cCAoZGVmYXVsdDogJ25hbWUnKVxuICBsb29rdXBEaXNwbGF5RmllbGRzPzogc3RyaW5nW107IC8vIE11bHRpcGxlIGZpZWxkcyB0byBkaXNwbGF5IHNlcGFyYXRlZCBieSAnIC0gJyAob3ZlcnJpZGVzIGxvb2t1cERpc3BsYXlGaWVsZClcbiAgbG9va3VwVmFsdWVGaWVsZD86IHN0cmluZzsgLy8gRmllbGQgdG8gdXNlIGFzIHZhbHVlIChkZWZhdWx0OiAnaWQnKVxuICBsb29rdXBTZWFyY2hGaWVsZHM/OiBzdHJpbmdbXTsgLy8gRmllbGRzIHRvIHNlYXJjaCBpbiAoZGVmYXVsdDogWyduYW1lJ10pXG4gIGxvb2t1cENvbHVtbnM/OiBMb29rdXBDb2x1bW5bXTsgLy8gQ29sdW1ucyB0byBkaXNwbGF5IGluIGxvb2t1cCB0YWJsZVxuICBsb29rdXBEeW5hbWljRmlsdGVycz86IChmb3JtVmFsdWVzOiBhbnkpID0+IHsgW2tleTogc3RyaW5nXTogYW55IH07IC8vIER5bmFtaWMgZmlsdGVycyBiYXNlZCBvbiBmb3JtIHZhbHVlc1xufVxuXG4vKipcbiAqIEZvcm0gZmllbGQgY29uZmlndXJhdGlvbiBmb3IgZW50aXR5IGZvcm1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtRmllbGRDb25maWcge1xuICBmaWVsZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdkcm9wZG93bicgfCAnbG9va3VwJyB8ICd0ZXh0YXJlYScgfCAnZW51bScgfCAnZGF0ZSc7XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdO1xuICBvcHRpb25zPzogYW55W107XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICB1c2VHcm91cGluZz86IGJvb2xlYW47IC8vIEZvciBudW1iZXIgaW5wdXRzXG4gIHJvd3M/OiBudW1iZXI7IC8vIEZvciB0ZXh0YXJlYVxuICBmdWxsU2l6ZT86IGJvb2xlYW47IC8vIEZvciB0ZXh0YXJlYSB0byB0YWtlIGZ1bGwgd2lkdGhcbiAgY29sc3Bhbj86IG51bWJlcjsgLy8gTnVtYmVyIG9mIGNvbHVtbnMgdG8gc3BhbiAoMS0xMiwgZGVmYXVsdDogNilcbiAgY29sc3BhbldoZW4/OiB7IC8vIENvbmRpdGlvbmFsIGNvbHNwYW4gYmFzZWQgb24gb3RoZXIgZmllbGQgdmFsdWVzXG4gICAgZmllbGQ6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xuICAgIGNvbHNwYW46IG51bWJlcjtcbiAgfVtdO1xuICB2aXNpYmxlV2hlbj86IHsgLy8gQ29uZGl0aW9uYWwgdmlzaWJpbGl0eVxuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdmFsdWU6IGFueTtcbiAgfTtcbiAgZGlzYWJsZWRXaGVuPzogeyAvLyBDb25kaXRpb25hbCBkaXNhYmxlZCBzdGF0ZVxuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdmFsdWU6IGFueTtcbiAgfTtcbiAgZGVmYXVsdFZhbHVlPzogYW55OyAvLyBEZWZhdWx0IHZhbHVlIGZvciBuZXcgcmVjb3Jkc1xuICAvLyBMb29rdXAgc3BlY2lmaWMgcHJvcGVydGllc1xuICBsb29rdXBTZXJ2aWNlPzogYW55OyAvLyBTZXJ2aWNlIHRvIGZldGNoIGxvb2t1cCBkYXRhXG4gIGxvb2t1cERpc3BsYXlGaWVsZD86IHN0cmluZzsgLy8gRmllbGQgdG8gZGlzcGxheSBpbiB0aGUgbG9va3VwIChkZWZhdWx0OiAnbmFtZScpXG4gIGxvb2t1cERpc3BsYXlGaWVsZHM/OiBzdHJpbmdbXTsgLy8gTXVsdGlwbGUgZmllbGRzIHRvIGRpc3BsYXkgc2VwYXJhdGVkIGJ5ICcgLSAnIChvdmVycmlkZXMgbG9va3VwRGlzcGxheUZpZWxkKVxuICBsb29rdXBWYWx1ZUZpZWxkPzogc3RyaW5nOyAvLyBGaWVsZCB0byB1c2UgYXMgdmFsdWUgKGRlZmF1bHQ6ICdpZCcpXG4gIGxvb2t1cFNlYXJjaEZpZWxkcz86IHN0cmluZ1tdOyAvLyBGaWVsZHMgdG8gc2VhcmNoIGluIChkZWZhdWx0OiBbJ25hbWUnXSlcbiAgbG9va3VwQ29sdW1ucz86IExvb2t1cENvbHVtbltdOyAvLyBDb2x1bW5zIHRvIGRpc3BsYXkgaW4gbG9va3VwIHRhYmxlXG4gIGxvb2t1cEZpbHRlcnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9OyAvLyBGaWx0ZXJzIHRvIGFwcGx5IHdoZW4gZmV0Y2hpbmcgbG9va3VwIGRhdGFcbiAgbG9va3VwRHluYW1pY0ZpbHRlcnM/OiAoZm9ybVZhbHVlczogYW55KSA9PiB7IFtrZXk6IHN0cmluZ106IGFueSB9OyAvLyBEeW5hbWljIGZpbHRlcnMgYmFzZWQgb24gZm9ybSB2YWx1ZXNcbiAgLy8gRW51bSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGVudW1PcHRpb25zPzogeyB2YWx1ZTogYW55OyBsYWJlbDogc3RyaW5nIH1bXTsgLy8gT3B0aW9ucyBmb3IgZW51bSBmaWVsZHNcbiAgZW51bVZhbHVlcz86IHN0cmluZ1tdOyAvLyBFbnVtIHZhbHVlcyBhcnJheVxuICBlbnVtTGFiZWxzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTsgLy8gRW51bSBsYWJlbHMgbWFwcGluZ1xuICAvLyBNYXNrIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgdXNlQ2VwTWFzaz86IGJvb2xlYW47IC8vIEFwcGx5IENFUCBtYXNrIHRvIHRleHQgZmllbGRzXG4gIHVzZVBob25lTWFzaz86IGJvb2xlYW47IC8vIEFwcGx5IHBob25lIG1hc2sgdG8gdGV4dCBmaWVsZHNcbiAgbWFzaz86ICdkeW5hbWljJyB8ICdjcGYnIHwgJ2NucGonIHwgJ2NlcCcgfCAncGhvbmUnIHwgJ2RvY3VtZW50JzsgLy8gTWFzayB0eXBlc1xuICBkaXNhYmxlZD86IGJvb2xlYW47IC8vIFN0YXRpYyBkaXNhYmxlZCBzdGF0ZVxuICAvLyBEYXRlIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgZGF0ZUZvcm1hdD86IHN0cmluZzsgLy8gRGF0ZSBmb3JtYXQgZm9yIGNhbGVuZGFyIChkZWZhdWx0OiAnZGQvbW0veXknKVxuICAvLyBOdW1iZXIgc3BlY2lmaWMgcHJvcGVydGllc1xuICBtaW5GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjsgLy8gTWluaW11bSBmcmFjdGlvbiBkaWdpdHMgZm9yIG51bWJlciBpbnB1dFxuICBtYXhGcmFjdGlvbkRpZ2l0cz86IG51bWJlcjsgLy8gTWF4aW11bSBmcmFjdGlvbiBkaWdpdHMgZm9yIG51bWJlciBpbnB1dFxuICBudW1iZXJNb2RlPzogJ2RlY2ltYWwnIHwgJ2N1cnJlbmN5JzsgLy8gTnVtYmVyIGlucHV0IG1vZGVcbiAgY3VycmVuY3k/OiBzdHJpbmc7IC8vIEN1cnJlbmN5IGNvZGUgKGRlZmF1bHQ6ICdCUkwnKVxuICBsb2NhbGU/OiBzdHJpbmc7IC8vIExvY2FsZSBmb3IgbnVtYmVyIGZvcm1hdHRpbmcgKGRlZmF1bHQ6ICdwdC1CUicpXG4gIC8vIERyb3Bkb3duIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgc2hvd0NsZWFyPzogYm9vbGVhbjsgLy8gU2hvdyBjbGVhciBidXR0b24gaW4gZHJvcGRvd25cbiAgZmlsdGVyPzogYm9vbGVhbjsgLy8gRW5hYmxlIGZpbHRlciBpbiBkcm9wZG93blxuICBmaWx0ZXJCeT86IHN0cmluZzsgLy8gRmllbGQgdG8gZmlsdGVyIGJ5IGluIGRyb3Bkb3duXG4gIC8vIExvb2t1cCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIGxvb2t1cEVudGl0eT86IHN0cmluZzsgLy8gRW50aXR5IG5hbWUgZm9yIGxvb2t1cFxufVxuXG4vKipcbiAqIEVudGl0eSBsaXN0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlMaXN0Q29uZmlnIHtcbiAgZW50aXR5TmFtZTogc3RyaW5nO1xuICBlbnRpdHlJY29uOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdO1xuICBmaWx0ZXJzOiBGaWx0ZXJDb25maWdbXTtcbiAgZml4ZWRGaWx0ZXJzPzogRmlsdGVyQ29uZmlnW107IC8vIEZpbHRlcnMgdGhhdCBhcHBlYXIgYXQgdGhlIHRvcCwgYWx3YXlzIHZpc2libGVcbiAgZmlsdGVyU2VjdGlvbnM/OiBGaWx0ZXJTZWN0aW9uW107IC8vIEdyb3VwZWQgZmlsdGVycyBpbiBzZWN0aW9uc1xuICBmb3JtRmllbGRzOiBGb3JtRmllbGRDb25maWdbXTtcbiAgZXhwb3J0RW5hYmxlZD86IGJvb2xlYW47XG4gIGJ1bGtEZWxldGVFbmFibGVkPzogYm9vbGVhbjtcbiAgYWRkQnV0dG9uTGFiZWw/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../services/translation.service";
|
|
4
|
+
export class TranslatePipe {
|
|
5
|
+
translationService;
|
|
6
|
+
cdr;
|
|
7
|
+
subscription;
|
|
8
|
+
lastKey;
|
|
9
|
+
lastParams;
|
|
10
|
+
lastTranslation;
|
|
11
|
+
isLoading = false;
|
|
12
|
+
constructor(translationService, cdr) {
|
|
13
|
+
this.translationService = translationService;
|
|
14
|
+
this.cdr = cdr;
|
|
15
|
+
}
|
|
16
|
+
transform(key, params) {
|
|
17
|
+
if (!key)
|
|
18
|
+
return '';
|
|
19
|
+
// Check if we need to update the translation
|
|
20
|
+
if (this.shouldUpdate(key, params)) {
|
|
21
|
+
this.updateTranslation(key, params);
|
|
22
|
+
}
|
|
23
|
+
return this.lastTranslation || key;
|
|
24
|
+
}
|
|
25
|
+
ngOnDestroy() {
|
|
26
|
+
if (this.subscription) {
|
|
27
|
+
this.subscription.unsubscribe();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
shouldUpdate(key, params) {
|
|
31
|
+
return this.lastKey !== key ||
|
|
32
|
+
JSON.stringify(this.lastParams) !== JSON.stringify(params) ||
|
|
33
|
+
!this.subscription;
|
|
34
|
+
}
|
|
35
|
+
updateTranslation(key, params) {
|
|
36
|
+
this.lastKey = key;
|
|
37
|
+
this.lastParams = params;
|
|
38
|
+
if (this.subscription) {
|
|
39
|
+
this.subscription.unsubscribe();
|
|
40
|
+
}
|
|
41
|
+
// Aguardar carregamento das traduções se necessário
|
|
42
|
+
if (!this.translationService.isLanguageLoaded()) {
|
|
43
|
+
if (!this.isLoading) {
|
|
44
|
+
this.isLoading = true;
|
|
45
|
+
this.translationService.waitForTranslations().then(() => {
|
|
46
|
+
this.isLoading = false;
|
|
47
|
+
this.lastTranslation = this.translationService.translate(key, params);
|
|
48
|
+
this.cdr.markForCheck();
|
|
49
|
+
}).catch(error => {
|
|
50
|
+
this.isLoading = false;
|
|
51
|
+
console.error('Error waiting for translations:', error);
|
|
52
|
+
this.lastTranslation = key;
|
|
53
|
+
this.cdr.markForCheck();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.subscription = this.translationService.currentLanguage$.subscribe(() => {
|
|
59
|
+
this.lastTranslation = this.translationService.translate(key, params);
|
|
60
|
+
this.cdr.markForCheck();
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TranslatePipe, deps: [{ token: i1.TranslationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
64
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TranslatePipe, isStandalone: true, name: "translate", pure: false });
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TranslatePipe, decorators: [{
|
|
67
|
+
type: Pipe,
|
|
68
|
+
args: [{
|
|
69
|
+
name: 'translate',
|
|
70
|
+
pure: false,
|
|
71
|
+
standalone: true
|
|
72
|
+
}]
|
|
73
|
+
}], ctorParameters: () => [{ type: i1.TranslationService }, { type: i0.ChangeDetectorRef }] });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvcGlwZXMvdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBK0MsTUFBTSxlQUFlLENBQUM7OztBQVNsRixNQUFNLE9BQU8sYUFBYTtJQVFkO0lBQ0E7SUFSRixZQUFZLENBQWdCO0lBQzVCLE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQU87SUFDakIsZUFBZSxDQUFVO0lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFMUIsWUFDVSxrQkFBc0MsRUFDdEMsR0FBc0I7UUFEdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUM3QixDQUFDO0lBRUosU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUErQjtRQUNwRCxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXBCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsR0FBVyxFQUFFLE1BQVk7UUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUc7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDMUQsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzVCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxHQUFXLEVBQUUsTUFBWTtRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUV6QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO29CQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FqRVUsYUFBYTtzR0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0cmFuc2xhdGUnLFxuICBwdXJlOiBmYWxzZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGFzdEtleT86IHN0cmluZztcbiAgcHJpdmF0ZSBsYXN0UGFyYW1zPzogYW55O1xuICBwcml2YXRlIGxhc3RUcmFuc2xhdGlvbj86IHN0cmluZztcbiAgcHJpdmF0ZSBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nLCBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcbiAgICBpZiAoIWtleSkgcmV0dXJuICcnO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHRyYW5zbGF0aW9uXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlKGtleSwgcGFyYW1zKSkge1xuICAgICAgdGhpcy51cGRhdGVUcmFuc2xhdGlvbihrZXksIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubGFzdFRyYW5zbGF0aW9uIHx8IGtleTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFVwZGF0ZShrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdEtleSAhPT0ga2V5IHx8IFxuICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxhc3RQYXJhbXMpICE9PSBKU09OLnN0cmluZ2lmeShwYXJhbXMpIHx8XG4gICAgICAgICAgICF0aGlzLnN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHZvaWQge1xuICAgIHRoaXMubGFzdEtleSA9IGtleTtcbiAgICB0aGlzLmxhc3RQYXJhbXMgPSBwYXJhbXM7XG4gICAgXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIEFndWFyZGFyIGNhcnJlZ2FtZW50byBkYXMgdHJhZHXDp8O1ZXMgc2UgbmVjZXNzw6FyaW9cbiAgICBpZiAoIXRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmlzTGFuZ3VhZ2VMb2FkZWQoKSkge1xuICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZykge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLndhaXRGb3JUcmFuc2xhdGlvbnMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubGFzdFRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKGtleSwgcGFyYW1zKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2FpdGluZyBmb3IgdHJhbnNsYXRpb25zOicsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLmxhc3RUcmFuc2xhdGlvbiA9IGtleTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5jdXJyZW50TGFuZ3VhZ2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxhc3RUcmFuc2xhdGlvbiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZShrZXksIHBhcmFtcyk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxufSJdfQ==
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./cookie.service";
|
|
5
|
+
export class AuthService {
|
|
6
|
+
cookieService;
|
|
7
|
+
TOKEN_COOKIE_NAME = 'com.senior.token';
|
|
8
|
+
API_URL_COOKIE_NAME = 'com.senior.base.url';
|
|
9
|
+
API_PATH_SUFFIX = '/t/senior.com.br/bridge/1.0/rest';
|
|
10
|
+
currentUserSubject = new BehaviorSubject(null);
|
|
11
|
+
currentUser$ = this.currentUserSubject.asObservable();
|
|
12
|
+
constructor(cookieService) {
|
|
13
|
+
this.cookieService = cookieService;
|
|
14
|
+
this.loadUserFromCookie();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Load user token from cookie
|
|
18
|
+
*/
|
|
19
|
+
loadUserFromCookie() {
|
|
20
|
+
const tokenString = this.cookieService.getCookie(this.TOKEN_COOKIE_NAME);
|
|
21
|
+
if (tokenString) {
|
|
22
|
+
try {
|
|
23
|
+
const token = JSON.parse(tokenString);
|
|
24
|
+
if (this.isTokenValid(token)) {
|
|
25
|
+
this.currentUserSubject.next(token);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.currentUserSubject.next(null);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('[AuthService] Error parsing token from cookie:', error);
|
|
33
|
+
this.currentUserSubject.next(null);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get current user token
|
|
39
|
+
*/
|
|
40
|
+
getCurrentUser() {
|
|
41
|
+
return this.currentUserSubject.value;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get access token
|
|
45
|
+
*/
|
|
46
|
+
getAccessToken() {
|
|
47
|
+
const user = this.getCurrentUser();
|
|
48
|
+
return user?.access_token || null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get token type (e.g., "Bearer")
|
|
52
|
+
*/
|
|
53
|
+
getTokenType() {
|
|
54
|
+
const user = this.getCurrentUser();
|
|
55
|
+
return user?.token_type || 'Bearer';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get refresh token
|
|
59
|
+
*/
|
|
60
|
+
getRefreshToken() {
|
|
61
|
+
const user = this.getCurrentUser();
|
|
62
|
+
return user?.refresh_token || null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get API base URL from cookie
|
|
66
|
+
*/
|
|
67
|
+
getApiBaseUrl() {
|
|
68
|
+
const baseUrl = this.cookieService.getCookie(this.API_URL_COOKIE_NAME);
|
|
69
|
+
// In development, use proxy
|
|
70
|
+
if (!baseUrl) {
|
|
71
|
+
// Check if we're in development mode
|
|
72
|
+
const isDevelopment = !window.location.hostname.includes('senior.com.br');
|
|
73
|
+
if (isDevelopment) {
|
|
74
|
+
return '/api';
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
// Remove trailing slash from base URL
|
|
79
|
+
const cleanBaseUrl = baseUrl.replace(/\/$/, '');
|
|
80
|
+
// Combine with API path suffix
|
|
81
|
+
return `${cleanBaseUrl}${this.API_PATH_SUFFIX}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if user is authenticated
|
|
85
|
+
*/
|
|
86
|
+
isAuthenticated() {
|
|
87
|
+
const user = this.getCurrentUser();
|
|
88
|
+
return user !== null && this.isTokenValid(user);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if token is valid (not expired)
|
|
92
|
+
*/
|
|
93
|
+
isTokenValid(token) {
|
|
94
|
+
if (!token || !token.access_token) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
// Check if token is expired
|
|
98
|
+
const now = Math.floor(Date.now() / 1000);
|
|
99
|
+
const tokenExpiry = token.expires_in;
|
|
100
|
+
// If expires_in is a timestamp, compare directly
|
|
101
|
+
// If it's a duration, we'd need the token creation time
|
|
102
|
+
// For now, assume it's a timestamp
|
|
103
|
+
// If expires_in is very large (like a duration in seconds), skip expiry check
|
|
104
|
+
if (tokenExpiry > 1000000000) {
|
|
105
|
+
// Looks like a timestamp
|
|
106
|
+
return tokenExpiry > now;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Looks like a duration, assume token is valid
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if refresh token is valid
|
|
115
|
+
*/
|
|
116
|
+
isRefreshTokenValid() {
|
|
117
|
+
const user = this.getCurrentUser();
|
|
118
|
+
if (!user || !user.refresh_token) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
const now = Math.floor(Date.now() / 1000);
|
|
122
|
+
const refreshExpiry = user.refresh_expires_in;
|
|
123
|
+
return refreshExpiry > now;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get user locale
|
|
127
|
+
*/
|
|
128
|
+
getUserLocale() {
|
|
129
|
+
const user = this.getCurrentUser();
|
|
130
|
+
return user?.locale || 'pt-BR';
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get user full name
|
|
134
|
+
*/
|
|
135
|
+
getUserFullName() {
|
|
136
|
+
const user = this.getCurrentUser();
|
|
137
|
+
return user?.fullName || '';
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get user email
|
|
141
|
+
*/
|
|
142
|
+
getUserEmail() {
|
|
143
|
+
const user = this.getCurrentUser();
|
|
144
|
+
return user?.email || '';
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get tenant name
|
|
148
|
+
*/
|
|
149
|
+
getTenantName() {
|
|
150
|
+
const user = this.getCurrentUser();
|
|
151
|
+
return user?.tenantName || '';
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get username
|
|
155
|
+
*/
|
|
156
|
+
getUsername() {
|
|
157
|
+
const user = this.getCurrentUser();
|
|
158
|
+
return user?.username || '';
|
|
159
|
+
}
|
|
160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthService, deps: [{ token: i1.CookieService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
161
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthService, decorators: [{
|
|
164
|
+
type: Injectable,
|
|
165
|
+
args: [{
|
|
166
|
+
providedIn: 'root'
|
|
167
|
+
}]
|
|
168
|
+
}], ctorParameters: () => [{ type: i1.CookieService }] });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQW9CdkMsTUFBTSxPQUFPLFdBQVc7SUFRRjtJQVBILGlCQUFpQixHQUFHLGtCQUFrQixDQUFDO0lBQ3ZDLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0lBQzVDLGVBQWUsR0FBRyxrQ0FBa0MsQ0FBQztJQUU5RCxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFDbEUsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUU3RCxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxrQkFBa0I7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQWMsQ0FBQztnQkFFbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsa0JBQWtCLENB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VUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi9jb29raWUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclRva2VuIHtcbiAgYWNjZXNzX3Rva2VuOiBzdHJpbmc7XG4gIGV4cGlyZXNfaW46IG51bWJlcjtcbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gIHJlZnJlc2hfZXhwaXJlc19pbjogbnVtYmVyO1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICB0ZW5hbnROYW1lOiBzdHJpbmc7XG4gIGxvY2FsZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBUT0tFTl9DT09LSUVfTkFNRSA9ICdjb20uc2VuaW9yLnRva2VuJztcbiAgcHJpdmF0ZSByZWFkb25seSBBUElfVVJMX0NPT0tJRV9OQU1FID0gJ2NvbS5zZW5pb3IuYmFzZS51cmwnO1xuICBwcml2YXRlIHJlYWRvbmx5IEFQSV9QQVRIX1NVRkZJWCA9ICcvdC9zZW5pb3IuY29tLmJyL2JyaWRnZS8xLjAvcmVzdCc7XG4gIFxuICBwcml2YXRlIGN1cnJlbnRVc2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlclRva2VuIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBjdXJyZW50VXNlciQgPSB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxvYWRVc2VyRnJvbUNvb2tpZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdXNlciB0b2tlbiBmcm9tIGNvb2tpZVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkVXNlckZyb21Db29raWUoKTogdm9pZCB7XG4gICAgY29uc3QgdG9rZW5TdHJpbmcgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0Q29va2llKHRoaXMuVE9LRU5fQ09PS0lFX05BTUUpO1xuICAgIFxuICAgIGlmICh0b2tlblN0cmluZykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBKU09OLnBhcnNlKHRva2VuU3RyaW5nKSBhcyBVc2VyVG9rZW47XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5pc1Rva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dCh0b2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW0F1dGhTZXJ2aWNlXSBFcnJvciBwYXJzaW5nIHRva2VuIGZyb20gY29va2llOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdXNlciB0b2tlblxuICAgKi9cbiAgZ2V0Q3VycmVudFVzZXIoKTogVXNlclRva2VuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXJTdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3MgdG9rZW5cbiAgICovXG4gIGdldEFjY2Vzc1Rva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXI/LmFjY2Vzc190b2tlbiB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0b2tlbiB0eXBlIChlLmcuLCBcIkJlYXJlclwiKVxuICAgKi9cbiAgZ2V0VG9rZW5UeXBlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICByZXR1cm4gdXNlcj8udG9rZW5fdHlwZSB8fCAnQmVhcmVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcmVmcmVzaCB0b2tlblxuICAgKi9cbiAgZ2V0UmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXI/LnJlZnJlc2hfdG9rZW4gfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQVBJIGJhc2UgVVJMIGZyb20gY29va2llXG4gICAqL1xuICBnZXRBcGlCYXNlVXJsKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0Q29va2llKHRoaXMuQVBJX1VSTF9DT09LSUVfTkFNRSk7XG4gICAgXG4gICAgLy8gSW4gZGV2ZWxvcG1lbnQsIHVzZSBwcm94eVxuICAgIGlmICghYmFzZVVybCkge1xuICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgaW4gZGV2ZWxvcG1lbnQgbW9kZVxuICAgICAgY29uc3QgaXNEZXZlbG9wbWVudCA9ICF3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuaW5jbHVkZXMoJ3Nlbmlvci5jb20uYnInKTtcbiAgICAgIGlmIChpc0RldmVsb3BtZW50KSB7XG4gICAgICAgIHJldHVybiAnL2FwaSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoIGZyb20gYmFzZSBVUkxcbiAgICBjb25zdCBjbGVhbkJhc2VVcmwgPSBiYXNlVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgXG4gICAgLy8gQ29tYmluZSB3aXRoIEFQSSBwYXRoIHN1ZmZpeFxuICAgIHJldHVybiBgJHtjbGVhbkJhc2VVcmx9JHt0aGlzLkFQSV9QQVRIX1NVRkZJWH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHVzZXIgaXMgYXV0aGVudGljYXRlZFxuICAgKi9cbiAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXIgIT09IG51bGwgJiYgdGhpcy5pc1Rva2VuVmFsaWQodXNlcik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdG9rZW4gaXMgdmFsaWQgKG5vdCBleHBpcmVkKVxuICAgKi9cbiAgcHJpdmF0ZSBpc1Rva2VuVmFsaWQodG9rZW46IFVzZXJUb2tlbik6IGJvb2xlYW4ge1xuICAgIGlmICghdG9rZW4gfHwgIXRva2VuLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRva2VuIGlzIGV4cGlyZWRcbiAgICBjb25zdCBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgICBjb25zdCB0b2tlbkV4cGlyeSA9IHRva2VuLmV4cGlyZXNfaW47XG4gICAgXG4gICAgLy8gSWYgZXhwaXJlc19pbiBpcyBhIHRpbWVzdGFtcCwgY29tcGFyZSBkaXJlY3RseVxuICAgIC8vIElmIGl0J3MgYSBkdXJhdGlvbiwgd2UnZCBuZWVkIHRoZSB0b2tlbiBjcmVhdGlvbiB0aW1lXG4gICAgLy8gRm9yIG5vdywgYXNzdW1lIGl0J3MgYSB0aW1lc3RhbXBcbiAgICAvLyBJZiBleHBpcmVzX2luIGlzIHZlcnkgbGFyZ2UgKGxpa2UgYSBkdXJhdGlvbiBpbiBzZWNvbmRzKSwgc2tpcCBleHBpcnkgY2hlY2tcbiAgICBpZiAodG9rZW5FeHBpcnkgPiAxMDAwMDAwMDAwKSB7XG4gICAgICAvLyBMb29rcyBsaWtlIGEgdGltZXN0YW1wXG4gICAgICByZXR1cm4gdG9rZW5FeHBpcnkgPiBub3c7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExvb2tzIGxpa2UgYSBkdXJhdGlvbiwgYXNzdW1lIHRva2VuIGlzIHZhbGlkXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgcmVmcmVzaCB0b2tlbiBpcyB2YWxpZFxuICAgKi9cbiAgaXNSZWZyZXNoVG9rZW5WYWxpZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIGlmICghdXNlciB8fCAhdXNlci5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG4gICAgY29uc3QgcmVmcmVzaEV4cGlyeSA9IHVzZXIucmVmcmVzaF9leHBpcmVzX2luO1xuICAgIFxuICAgIHJldHVybiByZWZyZXNoRXhwaXJ5ID4gbm93O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGxvY2FsZVxuICAgKi9cbiAgZ2V0VXNlckxvY2FsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXI/LmxvY2FsZSB8fCAncHQtQlInO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGZ1bGwgbmFtZVxuICAgKi9cbiAgZ2V0VXNlckZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICByZXR1cm4gdXNlcj8uZnVsbE5hbWUgfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgZW1haWxcbiAgICovXG4gIGdldFVzZXJFbWFpbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXI/LmVtYWlsIHx8ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0ZW5hbnQgbmFtZVxuICAgKi9cbiAgZ2V0VGVuYW50TmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXI/LnRlbmFudE5hbWUgfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXJuYW1lXG4gICAqL1xuICBnZXRVc2VybmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgcmV0dXJuIHVzZXI/LnVzZXJuYW1lIHx8ICcnO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CookieService {
|
|
4
|
+
/**
|
|
5
|
+
* Obtém o valor de um cookie pelo nome
|
|
6
|
+
*/
|
|
7
|
+
getCookie(name) {
|
|
8
|
+
if (typeof document === 'undefined') {
|
|
9
|
+
return null; // SSR protection
|
|
10
|
+
}
|
|
11
|
+
const nameEQ = name + '=';
|
|
12
|
+
const cookies = document.cookie.split(';');
|
|
13
|
+
for (let cookie of cookies) {
|
|
14
|
+
cookie = cookie.trim();
|
|
15
|
+
if (cookie.indexOf(nameEQ) === 0) {
|
|
16
|
+
const value = decodeURIComponent(cookie.substring(nameEQ.length));
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Define um cookie
|
|
24
|
+
*/
|
|
25
|
+
setCookie(name, value, days, path = '/') {
|
|
26
|
+
if (typeof document === 'undefined') {
|
|
27
|
+
return; // SSR protection
|
|
28
|
+
}
|
|
29
|
+
let expires = '';
|
|
30
|
+
if (days) {
|
|
31
|
+
const date = new Date();
|
|
32
|
+
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
|
33
|
+
expires = '; expires=' + date.toUTCString();
|
|
34
|
+
}
|
|
35
|
+
document.cookie = `${name}=${encodeURIComponent(value)}${expires}; path=${path}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Remove um cookie
|
|
39
|
+
*/
|
|
40
|
+
deleteCookie(name, path = '/') {
|
|
41
|
+
this.setCookie(name, '', -1, path);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Verifica se um cookie existe
|
|
45
|
+
*/
|
|
46
|
+
hasCookie(name) {
|
|
47
|
+
return this.getCookie(name) !== null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Obtém todos os cookies como objeto
|
|
51
|
+
*/
|
|
52
|
+
getAllCookies() {
|
|
53
|
+
if (typeof document === 'undefined') {
|
|
54
|
+
return {}; // SSR protection
|
|
55
|
+
}
|
|
56
|
+
const cookies = {};
|
|
57
|
+
const cookieArray = document.cookie.split(';');
|
|
58
|
+
for (let cookie of cookieArray) {
|
|
59
|
+
cookie = cookie.trim();
|
|
60
|
+
const [name, value] = cookie.split('=');
|
|
61
|
+
if (name && value) {
|
|
62
|
+
cookies[name] = decodeURIComponent(value);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return cookies;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Debug: Lista todos os cookies disponíveis
|
|
69
|
+
*/
|
|
70
|
+
debugAllCookies() {
|
|
71
|
+
console.log('[CookieService] All available cookies:');
|
|
72
|
+
const allCookies = this.getAllCookies();
|
|
73
|
+
Object.keys(allCookies).forEach(name => {
|
|
74
|
+
const value = allCookies[name];
|
|
75
|
+
console.log(`[CookieService] ${name}: ${value.length > 100 ? value.substring(0, 100) + '...' : value}`);
|
|
76
|
+
});
|
|
77
|
+
if (Object.keys(allCookies).length === 0) {
|
|
78
|
+
console.log('[CookieService] No cookies found');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CookieService, providedIn: 'root' });
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CookieService, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{
|
|
87
|
+
providedIn: 'root'
|
|
88
|
+
}]
|
|
89
|
+
}] });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvc2VydmljZXMvY29va2llLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGFBQWE7SUFFeEI7O09BRUc7SUFDSCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLENBQUMsaUJBQWlCO1FBQ2hDLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQzFCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLElBQWEsRUFBRSxPQUFlLEdBQUc7UUFDdEUsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsaUJBQWlCO1FBQzNCLENBQUM7UUFFRCxJQUFJLE9B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O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb29raWVTZXJ2aWNlIHtcblxuICAvKipcbiAgICogT2J0w6ltIG8gdmFsb3IgZGUgdW0gY29va2llIHBlbG8gbm9tZVxuICAgKi9cbiAgZ2V0Q29va2llKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gU1NSIHByb3RlY3Rpb25cbiAgICB9XG5cbiAgICBjb25zdCBuYW1lRVEgPSBuYW1lICsgJz0nO1xuICAgIGNvbnN0IGNvb2tpZXMgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcbiAgICBcbiAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykge1xuICAgICAgY29va2llID0gY29va2llLnRyaW0oKTtcbiAgICAgIGlmIChjb29raWUuaW5kZXhPZihuYW1lRVEpID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZS5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCkpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB1bSBjb29raWVcbiAgICovXG4gIHNldENvb2tpZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGRheXM/OiBudW1iZXIsIHBhdGg6IHN0cmluZyA9ICcvJyk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47IC8vIFNTUiBwcm90ZWN0aW9uXG4gICAgfVxuXG4gICAgbGV0IGV4cGlyZXMgPSAnJztcbiAgICBpZiAoZGF5cykge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgIGV4cGlyZXMgPSAnOyBleHBpcmVzPScgKyBkYXRlLnRvVVRDU3RyaW5nKCk7XG4gICAgfVxuICAgIFxuICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke25hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKX0ke2V4cGlyZXN9OyBwYXRoPSR7cGF0aH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB1bSBjb29raWVcbiAgICovXG4gIGRlbGV0ZUNvb2tpZShuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZyA9ICcvJyk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q29va2llKG5hbWUsICcnLCAtMSwgcGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW0gY29va2llIGV4aXN0ZVxuICAgKi9cbiAgaGFzQ29va2llKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENvb2tpZShuYW1lKSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnTDqW0gdG9kb3Mgb3MgY29va2llcyBjb21vIG9iamV0b1xuICAgKi9cbiAgZ2V0QWxsQ29va2llcygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHt9OyAvLyBTU1IgcHJvdGVjdGlvblxuICAgIH1cblxuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBjb29raWVBcnJheSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xuICAgIFxuICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVBcnJheSkge1xuICAgICAgY29va2llID0gY29va2llLnRyaW0oKTtcbiAgICAgIGNvbnN0IFtuYW1lLCB2YWx1ZV0gPSBjb29raWUuc3BsaXQoJz0nKTtcbiAgICAgIGlmIChuYW1lICYmIHZhbHVlKSB7XG4gICAgICAgIGNvb2tpZXNbbmFtZV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gY29va2llcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWJ1ZzogTGlzdGEgdG9kb3Mgb3MgY29va2llcyBkaXNwb27DrXZlaXNcbiAgICovXG4gIGRlYnVnQWxsQ29va2llcygpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW0Nvb2tpZVNlcnZpY2VdIEFsbCBhdmFpbGFibGUgY29va2llczonKTtcbiAgICBjb25zdCBhbGxDb29raWVzID0gdGhpcy5nZXRBbGxDb29raWVzKCk7XG4gICAgXG4gICAgT2JqZWN0LmtleXMoYWxsQ29va2llcykuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWxsQ29va2llc1tuYW1lXTtcbiAgICAgIGNvbnNvbGUubG9nKGBbQ29va2llU2VydmljZV0gJHtuYW1lfTogJHt2YWx1ZS5sZW5ndGggPiAxMDAgPyB2YWx1ZS5zdWJzdHJpbmcoMCwgMTAwKSArICcuLi4nIDogdmFsdWV9YCk7XG4gICAgfSk7XG4gICAgXG4gICAgaWYgKE9iamVjdC5rZXlzKGFsbENvb2tpZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ1tDb29raWVTZXJ2aWNlXSBObyBjb29raWVzIGZvdW5kJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|