ngx-dsxlibrary 1.0.4 → 1.0.6

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.
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ //# sourceMappingURL=ngx-dsxlibrary-src-lib-injections.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-dsxlibrary-src-lib-injections.mjs","sources":["../../../projects/ngx-dsx/src/lib/injections/ngx-dsxlibrary-src-lib-injections.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG"}
@@ -131,19 +131,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.0", ngImpor
131
131
  }] });
132
132
 
133
133
  class SecurityService {
134
+ // Inyecta el servicio HttpClient para realizar peticiones HTTP
134
135
  http = inject(HttpClient);
136
+ // Inyecta la configuración del entorno usando el token ENVIRONMENT
135
137
  environment = inject(ENVIRONMENT);
138
+ // Construye la URL base de la API utilizando la URL de la aplicación desde la configuración del entorno
136
139
  urlApi = `${this.environment.myAppUrl}api/authorize`;
140
+ /**
141
+ * Método para obtener un nuevo token de acceso utilizando un refresh token.
142
+ * @param refreshToken El refresh token que se utilizará para obtener un nuevo token de acceso.
143
+ * @returns Un Observable que emite un objeto de tipo ModelToken.
144
+ */
137
145
  tokenRefresh(refreshToken) {
138
- const body = { refreshToken }; // Enviar el token en formato JSON
146
+ // Crea el cuerpo de la solicitud con el refresh token
147
+ const body = { refreshToken };
148
+ // Realiza una solicitud POST al endpoint de refresco de token
139
149
  return this.http.post(`${this.urlApi}/TokenRefresh/`, body, {
140
150
  headers: new HttpHeaders({
141
- 'Content-Type': 'application/json', // Asegúrate de que se está enviando como JSON
151
+ 'Content-Type': 'application/json', // Establece el tipo de contenido como JSON
142
152
  }),
143
153
  });
144
154
  }
155
+ /**
156
+ * Método para obtener los parámetros de seguridad.
157
+ * @param invalidCacheParam Indica si se debe invalidar la caché (opcional, por defecto es false).
158
+ * @returns Un Observable que emite un objeto de tipo SeguridadITParameter.
159
+ */
145
160
  getParameterSecurity(invalidCacheParam = false) {
146
- const params = new HttpParams().set('invalidCacheParam', invalidCacheParam);
161
+ // Crea los parámetros de la solicitud, incluyendo el parámetro invalidCacheParam,
162
+ // parametro diseñado para invalidar la caché a traves del filtro
163
+ const params = new HttpParams().set('invalidCacheParam', invalidCacheParam.toString());
164
+ // Realiza una solicitud GET al endpoint de parámetros de seguridad
147
165
  return this.http.get(`${this.urlApi}/securityParameter/`, { params });
148
166
  }
149
167
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.0", ngImport: i0, type: SecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-dsxlibrary.mjs","sources":["../../../projects/ngx-dsx/src/lib/tokens/environment.token.ts","../../../projects/ngx-dsx/src/lib/services/spinner-loading.service.ts","../../../projects/ngx-dsx/src/lib/components/loading/loading.component.ts","../../../projects/ngx-dsx/src/lib/components/loading/loading.component.html","../../../projects/ngx-dsx/src/lib/services/authorize.service.ts","../../../projects/ngx-dsx/src/lib/services/security.service.ts","../../../projects/ngx-dsx/src/lib/services/alerta.service.ts","../../../projects/ngx-dsx/src/lib/services/error-handler.service.ts","../../../projects/ngx-dsx/src/lib/interceptors/http-authorize.interceptor.ts","../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.ts","../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.html","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.ts","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.html","../../../projects/ngx-dsx/src/lib/pipe/json-highlight.pipe.ts","../../../projects/ngx-dsx/src/public-api.ts","../../../projects/ngx-dsx/src/ngx-dsxlibrary.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface EnvironmentConfig {\r\n production: boolean;\r\n myAppUrl: string;\r\n tokenName: string;\r\n tokenNameRF: string;\r\n sessionStatus: string;\r\n refreshTokenExpiry: string;\r\n}\r\n\r\nexport const ENVIRONMENT = new InjectionToken<EnvironmentConfig>(\r\n 'EnvironmentConfig'\r\n);\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpinnerLoadingService {\r\n // Creamos una señal para el estado de visibilidad\r\n spinnerVisible = signal(false);\r\n\r\n constructor() {}\r\n\r\n // Método para mostrar el spinner\r\n show() {\r\n this.spinnerVisible.set(true);\r\n }\r\n\r\n // Método para ocultar el spinner\r\n hide() {\r\n this.spinnerVisible.set(false);\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { SpinnerLoadingService } from '../../services/spinner-loading.service';\r\n\r\n@Component({\r\n selector: 'app-loading',\r\n imports: [],\r\n templateUrl: './loading.component.html',\r\n styleUrl: './loading.component.scss',\r\n})\r\nexport class LoadingComponent {\r\n // Accedemos directamente a la señal del servicio\r\n _spinnerService = inject(SpinnerLoadingService);\r\n}\r\n","<!-- Actualización 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"assets/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">Desarollo Software Xela</p>\r\n</div>\r\n}\r\n","import { inject, Injectable, isDevMode } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { ENVIRONMENT, EnvironmentConfig } from '../tokens/environment.token';\r\nimport { ModelToken } from '../models/src/token.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthorizeService {\r\n private environment: EnvironmentConfig = inject(ENVIRONMENT);\r\n _cookieService = inject(CookieService);\r\n helperJwt = new JwtHelperService();\r\n private _isRefreshing = false;\r\n\r\n // Función para obtener opciones de cookies estándar\r\n private getCookieOptions(expiryDate: Date): any {\r\n const isProduction = this.environment.production;\r\n const cookieOptions: any = {\r\n path: '/',\r\n expires: expiryDate,\r\n secure: isProduction,\r\n sameSite: isProduction ? 'None' : 'Lax', // sameSite: 'None',\r\n };\r\n if (isProduction) {\r\n cookieOptions.domain = '.itgtxela.com';\r\n }\r\n return cookieOptions;\r\n }\r\n // Función para establecer una cookie\r\n private setCookie(name: string, value: string, expiryDate: Date): void {\r\n const options = this.getCookieOptions(expiryDate);\r\n this._cookieService.set(name, value, options);\r\n }\r\n\r\n get isRefreshing() {\r\n return this._isRefreshing;\r\n }\r\n set isRefreshing(value) {\r\n this._isRefreshing = value;\r\n }\r\n\r\n getToken(): string | null {\r\n return this._cookieService.get(this.environment.tokenName);\r\n //return localStorage.getItem(environment.tokenName);\r\n }\r\n\r\n getTokenRefresh(): string | null {\r\n //USO EN MODO DESARROLLO\r\n if (isDevMode()) {\r\n const tokenRefresh: string = this._cookieService.get(\r\n this.environment.tokenNameRF\r\n );\r\n const tokens: ModelToken = {\r\n token: '',\r\n tokenRefresh: '8508408a-6cbc-4ebb-b105-d851655a3b0c',\r\n refreshTokenExpiry: new Date(),\r\n };\r\n !!tokenRefresh ? null : this.tokenReload(tokens);\r\n }\r\n return this._cookieService.get(this.environment.tokenNameRF);\r\n //return localStorage.getItem(environment.tokenNameRF);\r\n }\r\n\r\n // Actualizar valores de status\r\n setLastActivity(): void {\r\n const tokenExpiryDate = new Date();\r\n // Expira en 30 minutos\r\n tokenExpiryDate.setMinutes(tokenExpiryDate.getMinutes() + 30);\r\n this.setCookie(\r\n this.environment.sessionStatus,\r\n Date.now().toString(),\r\n tokenExpiryDate\r\n );\r\n }\r\n\r\n // Almacenar los tokens en cookies\r\n tokenReload(tokens: ModelToken) {\r\n const tokenExpiryDate = new Date();\r\n tokenExpiryDate.setMinutes(tokenExpiryDate.getMinutes() + 30); // Access token expiry: 30 mins\r\n\r\n const refreshTokenExpiryDate = new Date();\r\n refreshTokenExpiryDate.setDate(refreshTokenExpiryDate.getDate() + 7); // Refresh token expiry: 7 days\r\n\r\n // Guardar el access token y refresh token\r\n this.setCookie(this.environment.tokenName, tokens.token, tokenExpiryDate);\r\n this.setCookie(\r\n this.environment.tokenNameRF,\r\n tokens.tokenRefresh,\r\n refreshTokenExpiryDate\r\n );\r\n\r\n // Guardar el estado de sesión\r\n this.setLastActivity();\r\n\r\n // Almacenar la fecha de expiración del refresh token en localStorage\r\n const expiryDate = new Date(tokens.refreshTokenExpiry).toISOString();\r\n localStorage.setItem(this.environment.refreshTokenExpiry, expiryDate);\r\n }\r\n\r\n getTokenValid(token: string | null): boolean {\r\n // Devuelve true si el token NO ha expirado\r\n return !this.helperJwt.isTokenExpired(token);\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ENVIRONMENT, EnvironmentConfig } from '../tokens/environment.token';\r\nimport { ModelToken } from '../models/src/token.model';\r\nimport { SeguridadITParameter } from '../models/src/securityParameter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SecurityService {\r\n private http = inject(HttpClient);\r\n private environment: EnvironmentConfig = inject(ENVIRONMENT);\r\n private urlApi: string = `${this.environment.myAppUrl}api/authorize`;\r\n\r\n tokenRefresh(refreshToken: string): Observable<ModelToken> {\r\n const body = { refreshToken }; // Enviar el token en formato JSON\r\n return this.http.post<ModelToken>(`${this.urlApi}/TokenRefresh/`, body, {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json', // Asegúrate de que se está enviando como JSON\r\n }),\r\n });\r\n }\r\n\r\n getParameterSecurity(\r\n invalidCacheParam: boolean = false\r\n ): Observable<SeguridadITParameter> {\r\n const params = new HttpParams().set('invalidCacheParam', invalidCacheParam);\r\n return this.http.get<SeguridadITParameter>(\r\n `${this.urlApi}/securityParameter/`,\r\n { params }\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport Swal from 'sweetalert2';\r\nimport { ResponseHttpModel } from '../models/src/response-http.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AlertaService {\r\n //Update: 2024-10-28 14:58 Arrendamientos\r\n\r\n private toastrService = inject(ToastrService);\r\n /**\r\n * @param {number} toastrAlign - Alineación de la alerta, por defecto 1. OPCIONES: 0. top-left 1. top-center 2. top-right 3. bottom-left 5. bottom-center 6. bottom-right\r\n * @param {number} toastrType - 1. Success 2. Info 3. Warning 4. Error\r\n * @param {number} toastrTimer - Tiempo de la alerta default 3000\r\n * @param {string} toastrTitle - Titulo de la alerta\r\n * @param {string} toastrMessage - Mensaje de la alerta\r\n * @returns - Retonar una alerta toastr\r\n * */\r\n\r\n toastrAlerts(\r\n toastrType: number,\r\n toastrTitle: string,\r\n toastrMessage: string,\r\n toastrAlign: number = 1,\r\n toastrTimer: number = 3000\r\n ) {\r\n const alignMessage = [\r\n { id: 0, align: 'toast-top-left' },\r\n { id: 1, align: 'toast-top-center' },\r\n { id: 2, align: 'toast-top-right' },\r\n { id: 3, align: 'toast-bottom-left' },\r\n { id: 4, align: 'toast-bottom-center' },\r\n { id: 5, align: 'toast-bottom-right' },\r\n ];\r\n\r\n const valueAlign: string | undefined = alignMessage.find(\r\n (c) => c.id == toastrAlign\r\n )?.align;\r\n\r\n const toastrMethods: {\r\n [key: number]: (message: string, title?: string, options?: any) => void;\r\n } = {\r\n 1: this.toastrService.success.bind(this.toastrService),\r\n 2: this.toastrService.info.bind(this.toastrService),\r\n 3: this.toastrService.warning.bind(this.toastrService),\r\n 4: this.toastrService.error.bind(this.toastrService),\r\n };\r\n\r\n const showToast = toastrMethods[toastrType];\r\n\r\n if (showToast) {\r\n showToast(toastrMessage, toastrTitle, {\r\n enableHtml: true,\r\n closeButton: true,\r\n progressBar: true,\r\n positionClass: valueAlign,\r\n timeOut: toastrTimer,\r\n });\r\n }\r\n }\r\n\r\n private preloadImage(icono: string): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.src = `assets/icon/${icono}`;\r\n img.onload = () => resolve();\r\n img.onerror = (err) => reject(err);\r\n });\r\n }\r\n\r\n alertConfirm(title: string, text: string, icono: string): Promise<boolean> {\r\n return this.preloadImage(icono).then(() =>\r\n Swal.fire({\r\n title: title,\r\n html: text,\r\n footer: '<strong>DevSoftXela</strong> 2025',\r\n imageUrl: `assets/icon/${icono}`,\r\n imageWidth: 150,\r\n imageHeight: 150,\r\n imageAlt: 'icon',\r\n showCloseButton: true,\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: `<i class=\"fa fa-thumbs-up\"></i> Aceptar!`,\r\n cancelButtonText: `<i class=\"fa fa-thumbs-down\"></i> Cancelar`,\r\n }).then((result) => result.isConfirmed)\r\n );\r\n }\r\n\r\n alertaHtml(\r\n titleAlert: string,\r\n message: string,\r\n icono: string = 'notFound01.png',\r\n timer: number = 2500\r\n ): Promise<void> {\r\n return this.preloadImage(icono).then(() => {\r\n Swal.fire({\r\n title: titleAlert,\r\n imageUrl: `assets/icon/${icono}`,\r\n imageWidth: 145,\r\n imageHeight: 125,\r\n imageAlt: 'error 404',\r\n html: `\r\n <strong>ALERTA: </strong><i class='text-red-300'>${message}</i> <span class='text-blue-600'> comuniquese con el administrador. </span>\r\n `,\r\n showConfirmButton: false,\r\n timerProgressBar: true,\r\n timer: timer,\r\n });\r\n return;\r\n });\r\n }\r\n\r\n alertaHtmlSuccess(\r\n titleAlert: string,\r\n message: string,\r\n icono: string = 'check02.png',\r\n timer: number = 2000\r\n ): Promise<void> {\r\n return this.preloadImage(icono).then(() => {\r\n Swal.fire({\r\n title: titleAlert,\r\n imageUrl: `assets/icon/${icono}`,\r\n imageWidth: 125,\r\n imageHeight: 125,\r\n imageAlt: 'success 200',\r\n html: `\r\n <strong>Alerta: </strong><b class='text-success'>${message}</b>\r\n `,\r\n showConfirmButton: false,\r\n timerProgressBar: true,\r\n timer: timer,\r\n });\r\n return;\r\n });\r\n }\r\n\r\n //notifyAlertSuccess(message: string) {\r\n // this._notyf.success({\r\n // message: message,\r\n // duration: 1500,\r\n // position: {\r\n // x: 'center',\r\n // y: 'top'\r\n // }\r\n // });\r\n //}\r\n\r\n toastrHttpResponse(response: ResponseHttpModel) {\r\n const time = 3000;\r\n const align = 'toast-top-center';\r\n if (response.isSuccess) {\r\n this.toastrService.success(response.statusMessage, response.title, {\r\n enableHtml: true,\r\n closeButton: true,\r\n progressBar: true,\r\n positionClass: align,\r\n timeOut: time,\r\n });\r\n } else {\r\n this.toastrService.error(response.statusMessage, response.title, {\r\n enableHtml: true,\r\n closeButton: true,\r\n progressBar: true,\r\n positionClass: align,\r\n timeOut: time,\r\n });\r\n }\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\r\nimport { Injectable, inject, isDevMode } from '@angular/core';\r\nimport { throwError } from 'rxjs';\r\nimport { AlertaService } from './alerta.service';\r\nimport { ErrorModel } from '../models/src/error.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorHandlerService {\r\n _serviceAlerta = inject(AlertaService);\r\n\r\n handleErrorResponse(error: HttpErrorResponse) {\r\n const err: ErrorModel = error as ErrorModel;\r\n const technicalMessage = `Error status: ${error.status}, Message: ${error.message}, URL: ${error.url}`;\r\n\r\n let userMessage = 'Ha ocurrido un error inesperado.';\r\n\r\n switch (error.status) {\r\n case HttpStatusCode.BadRequest:\r\n userMessage =\r\n 'Solicitud incorrecta (400). Verifica los datos ingresados o validaciones existentes.';\r\n break;\r\n case HttpStatusCode.Unauthorized:\r\n userMessage = 'Acceso no autorizado (401). Por favor inicia sesión.';\r\n break;\r\n case HttpStatusCode.Forbidden:\r\n userMessage = 'No tienes permisos para realizar esta acción (403).';\r\n break;\r\n case HttpStatusCode.NotFound:\r\n userMessage = 'No se encontró el recurso solicitado (404).';\r\n break;\r\n case HttpStatusCode.Conflict: // Capturar error de concurrencia\r\n userMessage =\r\n 'El registro fue modificado por otro usuario. Por favor, actualiza los datos antes de continuar.';\r\n break;\r\n case HttpStatusCode.InternalServerError:\r\n userMessage =\r\n 'Ocurrió un error en el servidor (500). Inténtalo más tarde.';\r\n break;\r\n default:\r\n userMessage = 'Un error inesperado ha ocurrido.';\r\n break;\r\n }\r\n\r\n // Mostrar mensaje para el usuario\r\n this._serviceAlerta.alertaHtml(\r\n 'Servicios de Errores',\r\n '<i>Código:</i> ' +\r\n err.status +\r\n ' <i>Message:</i> ' +\r\n userMessage +\r\n `. (${error.error})`\r\n );\r\n\r\n // Imprimir el mensaje técnico\r\n if (isDevMode()) {\r\n console.error(err);\r\n }\r\n\r\n // Retornar el error para continuar con el flujo de manejo de errores\r\n return throwError(() => new Error(technicalMessage));\r\n }\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpInterceptorFn,\r\n HttpStatusCode,\r\n} from '@angular/common/http';\r\nimport { catchError, finalize, Observable, switchMap } from 'rxjs';\r\nimport { inject } from '@angular/core';\r\nimport { AuthorizeService } from '../services/authorize.service';\r\nimport { SecurityService } from '../services/security.service';\r\nimport { ErrorHandlerService } from '../services/error-handler.service';\r\nimport { SpinnerLoadingService } from '../services/spinner-loading.service';\r\nimport { ModelToken } from '../models/src/token.model';\r\n\r\n//Update: 2024-01-29 12:00\r\n\r\nlet _activeRequest = 0;\r\n//let isRefreshing = false; // Estado de si se está refrescando el token\r\nlet pendingRequests: any[] = []; // Cola de solicitudes pendientes\r\n\r\nexport const httpAuthorizeInterceptor: HttpInterceptorFn = (req, next) => {\r\n //console.log('------ INGRESO A HTTPINTERCEPTOR -------');\r\n const _authorizeService = inject(AuthorizeService);\r\n const _securityService = inject(SecurityService);\r\n const _spinnerService = inject(SpinnerLoadingService);\r\n const _handleErrorService = inject(ErrorHandlerService);\r\n\r\n //Variables\r\n const _token = _authorizeService.getToken();\r\n const _tokenRefresh = _authorizeService.getTokenRefresh();\r\n\r\n //Generar la petición con el token\r\n const authReq = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${_token}`,\r\n },\r\n });\r\n\r\n if (_activeRequest == 0) {\r\n _spinnerService.show();\r\n }\r\n\r\n _activeRequest++;\r\n\r\n return next(authReq).pipe(\r\n catchError((error: HttpErrorResponse): Observable<HttpEvent<any>> => {\r\n // Si el error es 401\r\n if (error.status === HttpStatusCode.Unauthorized) {\r\n // Si no hay refreshToken, finalizar la sesión\r\n if (!_tokenRefresh) {\r\n _spinnerService.hide();\r\n return _handleErrorService.handleErrorResponse(\r\n new HttpErrorResponse({\r\n status: 401,\r\n statusText:\r\n 'No autorizado. El token de refresco no está disponible.',\r\n })\r\n );\r\n }\r\n\r\n // Intentar refrescar el token si no se está haciendo ya\r\n if (!_authorizeService.isRefreshing) {\r\n // Marcamos que se está refrescando el token\r\n _authorizeService.isRefreshing = true;\r\n\r\n // Intentar refrescar el token\r\n return _securityService.tokenRefresh(_tokenRefresh).pipe(\r\n switchMap((response: ModelToken) => {\r\n if (!response.token || !response.tokenRefresh) {\r\n _spinnerService.hide();\r\n return _handleErrorService.handleErrorResponse(\r\n new HttpErrorResponse({\r\n status: 401,\r\n statusText:\r\n 'No autorizado. El token de refresco ha expirado.',\r\n })\r\n );\r\n }\r\n\r\n // Recargar el token en el servicio\r\n _authorizeService.tokenReload(response);\r\n\r\n // Generar una nueva solicitud con el token actualizado\r\n const newReq = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${response.token}`,\r\n },\r\n });\r\n\r\n // Refresco completado\r\n _authorizeService.isRefreshing = false;\r\n\r\n pendingRequests.forEach((pendingReq) => {\r\n const clonedReq = pendingReq.authReq.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${_authorizeService.getToken()}`,\r\n },\r\n });\r\n\r\n // Volver a ejecutar las solicitudes pendientes con el nuevo token\r\n next(clonedReq).subscribe({\r\n next: pendingReq.next,\r\n error: pendingReq.error,\r\n complete: pendingReq.complete,\r\n });\r\n });\r\n pendingRequests = []; // Limpiar la cola\r\n\r\n return next(newReq); // Procesar la solicitud original con el nuevo token\r\n }),\r\n catchError((refreshError: HttpErrorResponse) => {\r\n // Finalizamos el refresco si hay error\r\n _authorizeService.isRefreshing = false;\r\n _spinnerService.hide();\r\n return _handleErrorService.handleErrorResponse(\r\n new HttpErrorResponse({\r\n status: 401,\r\n statusText:\r\n 'Error al refrescar el token. Redirigiendo al login.',\r\n })\r\n );\r\n }),\r\n finalize(() => {\r\n _authorizeService.isRefreshing = false;\r\n })\r\n );\r\n } else {\r\n // Si ya se está refrescando, añadir la solicitud a la cola\r\n return new Observable((observer) => {\r\n pendingRequests.push({\r\n authReq,\r\n next: observer.next.bind(observer),\r\n error: observer.error.bind(observer),\r\n complete: observer.complete.bind(observer),\r\n });\r\n });\r\n }\r\n }\r\n // Si no es un error 401, manejar otros errores\r\n return _handleErrorService.handleErrorResponse(error);\r\n }),\r\n finalize(() => {\r\n _activeRequest--;\r\n if (_activeRequest === 0) {\r\n _spinnerService.hide();\r\n }\r\n })\r\n );\r\n};\r\n","import { Component, Input } from '@angular/core';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\n@Component({\r\n selector: 'app-message-error',\r\n imports: [TagModule],\r\n templateUrl: './app-message-error.component.html',\r\n styleUrl: './app-message-error.component.scss',\r\n})\r\nexport class AppMessageErrorComponent {\r\n // Control de formulario que se pasa como input\r\n @Input() control!: AbstractControl | null;\r\n @Input() form: FormGroup | null = null;\r\n}\r\n","@if(control?.touched && control?.invalid){\r\n<div class=\"absolute dsx-error-message\">\r\n @if(control?.errors?.['required']){ El campo <strong>es requerido.</strong>\r\n } @else if(control?.errors?.['invalidDateRange']){\r\n <strong>{{ control?.errors?.['invalidDateRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['dateNotRange']){\r\n <strong>{{ control?.errors?.['dateNotRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['minlength']){ Debe tener al menos\r\n <strong>{{ control?.errors?.['minlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['maxlength']){ Debe tener como máximo\r\n <strong>{{ control?.errors?.['maxlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['min']){ El valor mínimo permitido es\r\n <strong>{{ control?.errors?.['min']?.min }}</strong\r\n >. } @else if(control?.errors?.['max']){ El valor máximo permitido es\r\n <strong>{{ control?.errors?.['max']?.max }}</strong\r\n >. } @else if(control?.errors?.['email']){ Debe ser una dirección de correo\r\n válida. } @else if(control?.errors?.['pattern']){ El campo no tiene el formato\r\n requerido. } @else{ Existe un error aún no identificado. }\r\n</div>\r\n}\r\n<!-- mensaje para formulario en general -->\r\n@if(form?.invalid && form?.touched){\r\n<div class=\"mt-2 mb-2\">\r\n @if(this.form?.errors?.['atLeastOneRequired']){\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n</div>\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { CountUpModule } from 'ngx-countup';\r\n\r\n@Component({\r\n selector: 'app-kpicard',\r\n imports: [CountUpModule],\r\n templateUrl: './kpicard.component.html',\r\n styleUrl: './kpicard.component.css',\r\n})\r\nexport class KpicardComponent {\r\n //type = input.required<string>();\r\n option = input.required<'currency' | 'integer'>();\r\n label = input.required<string>();\r\n iconType = input<string>('fa-regular fa-bell');\r\n color = input<string>();\r\n valor = input<number>(0);\r\n theme = input<string>('light');\r\n\r\n options: Record<'currency' | 'integer', any> = {\r\n currency: {\r\n startVal: 0,\r\n duration: 0.5,\r\n prefix: 'Q',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n suffix: ' GTQ', // Sufijo\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n integer: {\r\n startVal: 0,\r\n duration: 0.5,\r\n prefix: 'Cant. ',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n };\r\n\r\n // ✅ Método auxiliar para obtener la opción con seguridad\r\n getSelectedOption() {\r\n return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`\r\n }\r\n}\r\n","<div class=\"kpi-card {{ color() }}\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [options]=\"getSelectedOption()\"\r\n [class]=\"theme() === 'light' ? 'card-value-light' : 'card-value-dark'\"\r\n >0</span\r\n >\r\n <span [class]=\"theme() === 'light' ? 'card-text-light' : 'card-text-dark'\">{{\r\n label()\r\n }}</span>\r\n <i\r\n [class]=\"\r\n theme() === 'light'\r\n ? iconType() + ' icon icon-light'\r\n : iconType() + ' icon icon-dark'\r\n \"\r\n ></i>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'jsonHighlight',\r\n})\r\nexport class JsonHighlightPipe implements PipeTransform {\r\n transform(value: any): string {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n const json = JSON.stringify(value, null, 2); // Formatea el JSON con sangría\r\n\r\n // Aplica estilo y colores básicos para diferenciar claves y valores\r\n return json\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/(\".*?\"):/g, '<span class=\"json-key\">$1</span>:')\r\n .replace(/:\\s(\".*?\")/g, ': <span class=\"json-string\">$1</span>')\r\n .replace(/\\b(true|false|null)\\b/g, '<span class=\"json-boolean\">$1</span>')\r\n .replace(/:\\s(\\d+)/g, ': <span class=\"json-number\">$1</span>');\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-dsx\r\n */\r\nexport * from './lib/tokens/environment.token';\r\nexport * from './lib/components/loading/loading.component';\r\nexport * from './lib/interceptors/http-authorize.interceptor';\r\nexport * from './lib/services/security.service';\r\nexport * from './lib/services/alerta.service';\r\nexport * from './lib/services/authorize.service';\r\nexport * from './lib/components';\r\nexport * from './lib/models';\r\nexport * from './lib/pipe';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-dsxlibrary.mjs","sources":["../../../projects/ngx-dsx/src/lib/injections/environment.token.ts","../../../projects/ngx-dsx/src/lib/services/spinner-loading.service.ts","../../../projects/ngx-dsx/src/lib/components/loading/loading.component.ts","../../../projects/ngx-dsx/src/lib/components/loading/loading.component.html","../../../projects/ngx-dsx/src/lib/services/authorize.service.ts","../../../projects/ngx-dsx/src/lib/services/security.service.ts","../../../projects/ngx-dsx/src/lib/services/alerta.service.ts","../../../projects/ngx-dsx/src/lib/services/error-handler.service.ts","../../../projects/ngx-dsx/src/lib/interceptors/http-authorize.interceptor.ts","../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.ts","../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.html","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.ts","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.html","../../../projects/ngx-dsx/src/lib/pipe/json-highlight.pipe.ts","../../../projects/ngx-dsx/src/public-api.ts","../../../projects/ngx-dsx/src/ngx-dsxlibrary.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface EnvironmentConfig {\r\n production: boolean;\r\n myAppUrl: string;\r\n tokenName: string;\r\n tokenNameRF: string;\r\n sessionStatus: string;\r\n refreshTokenExpiry: string;\r\n}\r\n\r\nexport const ENVIRONMENT = new InjectionToken<EnvironmentConfig>(\r\n 'EnvironmentConfig'\r\n);\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpinnerLoadingService {\r\n // Creamos una señal para el estado de visibilidad\r\n spinnerVisible = signal(false);\r\n\r\n constructor() {}\r\n\r\n // Método para mostrar el spinner\r\n show() {\r\n this.spinnerVisible.set(true);\r\n }\r\n\r\n // Método para ocultar el spinner\r\n hide() {\r\n this.spinnerVisible.set(false);\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { SpinnerLoadingService } from '../../services/spinner-loading.service';\r\n\r\n@Component({\r\n selector: 'app-loading',\r\n imports: [],\r\n templateUrl: './loading.component.html',\r\n styleUrl: './loading.component.scss',\r\n})\r\nexport class LoadingComponent {\r\n // Accedemos directamente a la señal del servicio\r\n _spinnerService = inject(SpinnerLoadingService);\r\n}\r\n","<!-- Actualización 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"assets/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">Desarollo Software Xela</p>\r\n</div>\r\n}\r\n","import { inject, Injectable, isDevMode } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n ENVIRONMENT,\r\n EnvironmentConfig,\r\n} from '../injections/environment.token';\r\nimport { ModelToken } from '../models/src/token.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthorizeService {\r\n private environment: EnvironmentConfig = inject(ENVIRONMENT);\r\n _cookieService = inject(CookieService);\r\n helperJwt = new JwtHelperService();\r\n private _isRefreshing = false;\r\n\r\n // Función para obtener opciones de cookies estándar\r\n private getCookieOptions(expiryDate: Date): any {\r\n const isProduction = this.environment.production;\r\n const cookieOptions: any = {\r\n path: '/',\r\n expires: expiryDate,\r\n secure: isProduction,\r\n sameSite: isProduction ? 'None' : 'Lax', // sameSite: 'None',\r\n };\r\n if (isProduction) {\r\n cookieOptions.domain = '.itgtxela.com';\r\n }\r\n return cookieOptions;\r\n }\r\n // Función para establecer una cookie\r\n private setCookie(name: string, value: string, expiryDate: Date): void {\r\n const options = this.getCookieOptions(expiryDate);\r\n this._cookieService.set(name, value, options);\r\n }\r\n\r\n get isRefreshing() {\r\n return this._isRefreshing;\r\n }\r\n set isRefreshing(value) {\r\n this._isRefreshing = value;\r\n }\r\n\r\n getToken(): string | null {\r\n return this._cookieService.get(this.environment.tokenName);\r\n //return localStorage.getItem(environment.tokenName);\r\n }\r\n\r\n getTokenRefresh(): string | null {\r\n //USO EN MODO DESARROLLO\r\n if (isDevMode()) {\r\n const tokenRefresh: string = this._cookieService.get(\r\n this.environment.tokenNameRF\r\n );\r\n const tokens: ModelToken = {\r\n token: '',\r\n tokenRefresh: '8508408a-6cbc-4ebb-b105-d851655a3b0c',\r\n refreshTokenExpiry: new Date(),\r\n };\r\n !!tokenRefresh ? null : this.tokenReload(tokens);\r\n }\r\n return this._cookieService.get(this.environment.tokenNameRF);\r\n //return localStorage.getItem(environment.tokenNameRF);\r\n }\r\n\r\n // Actualizar valores de status\r\n setLastActivity(): void {\r\n const tokenExpiryDate = new Date();\r\n // Expira en 30 minutos\r\n tokenExpiryDate.setMinutes(tokenExpiryDate.getMinutes() + 30);\r\n this.setCookie(\r\n this.environment.sessionStatus,\r\n Date.now().toString(),\r\n tokenExpiryDate\r\n );\r\n }\r\n\r\n // Almacenar los tokens en cookies\r\n tokenReload(tokens: ModelToken) {\r\n const tokenExpiryDate = new Date();\r\n tokenExpiryDate.setMinutes(tokenExpiryDate.getMinutes() + 30); // Access token expiry: 30 mins\r\n\r\n const refreshTokenExpiryDate = new Date();\r\n refreshTokenExpiryDate.setDate(refreshTokenExpiryDate.getDate() + 7); // Refresh token expiry: 7 days\r\n\r\n // Guardar el access token y refresh token\r\n this.setCookie(this.environment.tokenName, tokens.token, tokenExpiryDate);\r\n this.setCookie(\r\n this.environment.tokenNameRF,\r\n tokens.tokenRefresh,\r\n refreshTokenExpiryDate\r\n );\r\n\r\n // Guardar el estado de sesión\r\n this.setLastActivity();\r\n\r\n // Almacenar la fecha de expiración del refresh token en localStorage\r\n const expiryDate = new Date(tokens.refreshTokenExpiry).toISOString();\r\n localStorage.setItem(this.environment.refreshTokenExpiry, expiryDate);\r\n }\r\n\r\n getTokenValid(token: string | null): boolean {\r\n // Devuelve true si el token NO ha expirado\r\n return !this.helperJwt.isTokenExpired(token);\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n ENVIRONMENT,\r\n EnvironmentConfig,\r\n} from '../injections/environment.token';\r\nimport { SeguridadITParameter } from '../models/src/securityParameter.model';\r\nimport { ModelToken } from '../models/src/token.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SecurityService {\r\n // Inyecta el servicio HttpClient para realizar peticiones HTTP\r\n private http = inject(HttpClient);\r\n\r\n // Inyecta la configuración del entorno usando el token ENVIRONMENT\r\n private environment: EnvironmentConfig = inject(ENVIRONMENT);\r\n\r\n // Construye la URL base de la API utilizando la URL de la aplicación desde la configuración del entorno\r\n private urlApi: string = `${this.environment.myAppUrl}api/authorize`;\r\n\r\n /**\r\n * Método para obtener un nuevo token de acceso utilizando un refresh token.\r\n * @param refreshToken El refresh token que se utilizará para obtener un nuevo token de acceso.\r\n * @returns Un Observable que emite un objeto de tipo ModelToken.\r\n */\r\n tokenRefresh(refreshToken: string): Observable<ModelToken> {\r\n // Crea el cuerpo de la solicitud con el refresh token\r\n const body = { refreshToken };\r\n\r\n // Realiza una solicitud POST al endpoint de refresco de token\r\n return this.http.post<ModelToken>(`${this.urlApi}/TokenRefresh/`, body, {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json', // Establece el tipo de contenido como JSON\r\n }),\r\n });\r\n }\r\n\r\n /**\r\n * Método para obtener los parámetros de seguridad.\r\n * @param invalidCacheParam Indica si se debe invalidar la caché (opcional, por defecto es false).\r\n * @returns Un Observable que emite un objeto de tipo SeguridadITParameter.\r\n */\r\n getParameterSecurity(\r\n invalidCacheParam: boolean = false\r\n ): Observable<SeguridadITParameter> {\r\n // Crea los parámetros de la solicitud, incluyendo el parámetro invalidCacheParam,\r\n // parametro diseñado para invalidar la caché a traves del filtro\r\n const params = new HttpParams().set(\r\n 'invalidCacheParam',\r\n invalidCacheParam.toString()\r\n );\r\n\r\n // Realiza una solicitud GET al endpoint de parámetros de seguridad\r\n return this.http.get<SeguridadITParameter>(\r\n `${this.urlApi}/securityParameter/`,\r\n { params }\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport Swal from 'sweetalert2';\r\nimport { ResponseHttpModel } from '../models/src/response-http.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AlertaService {\r\n //Update: 2024-10-28 14:58 Arrendamientos\r\n\r\n private toastrService = inject(ToastrService);\r\n /**\r\n * @param {number} toastrAlign - Alineación de la alerta, por defecto 1. OPCIONES: 0. top-left 1. top-center 2. top-right 3. bottom-left 5. bottom-center 6. bottom-right\r\n * @param {number} toastrType - 1. Success 2. Info 3. Warning 4. Error\r\n * @param {number} toastrTimer - Tiempo de la alerta default 3000\r\n * @param {string} toastrTitle - Titulo de la alerta\r\n * @param {string} toastrMessage - Mensaje de la alerta\r\n * @returns - Retonar una alerta toastr\r\n * */\r\n\r\n toastrAlerts(\r\n toastrType: number,\r\n toastrTitle: string,\r\n toastrMessage: string,\r\n toastrAlign: number = 1,\r\n toastrTimer: number = 3000\r\n ) {\r\n const alignMessage = [\r\n { id: 0, align: 'toast-top-left' },\r\n { id: 1, align: 'toast-top-center' },\r\n { id: 2, align: 'toast-top-right' },\r\n { id: 3, align: 'toast-bottom-left' },\r\n { id: 4, align: 'toast-bottom-center' },\r\n { id: 5, align: 'toast-bottom-right' },\r\n ];\r\n\r\n const valueAlign: string | undefined = alignMessage.find(\r\n (c) => c.id == toastrAlign\r\n )?.align;\r\n\r\n const toastrMethods: {\r\n [key: number]: (message: string, title?: string, options?: any) => void;\r\n } = {\r\n 1: this.toastrService.success.bind(this.toastrService),\r\n 2: this.toastrService.info.bind(this.toastrService),\r\n 3: this.toastrService.warning.bind(this.toastrService),\r\n 4: this.toastrService.error.bind(this.toastrService),\r\n };\r\n\r\n const showToast = toastrMethods[toastrType];\r\n\r\n if (showToast) {\r\n showToast(toastrMessage, toastrTitle, {\r\n enableHtml: true,\r\n closeButton: true,\r\n progressBar: true,\r\n positionClass: valueAlign,\r\n timeOut: toastrTimer,\r\n });\r\n }\r\n }\r\n\r\n private preloadImage(icono: string): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.src = `assets/icon/${icono}`;\r\n img.onload = () => resolve();\r\n img.onerror = (err) => reject(err);\r\n });\r\n }\r\n\r\n alertConfirm(title: string, text: string, icono: string): Promise<boolean> {\r\n return this.preloadImage(icono).then(() =>\r\n Swal.fire({\r\n title: title,\r\n html: text,\r\n footer: '<strong>DevSoftXela</strong> 2025',\r\n imageUrl: `assets/icon/${icono}`,\r\n imageWidth: 150,\r\n imageHeight: 150,\r\n imageAlt: 'icon',\r\n showCloseButton: true,\r\n showCancelButton: true,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n confirmButtonText: `<i class=\"fa fa-thumbs-up\"></i> Aceptar!`,\r\n cancelButtonText: `<i class=\"fa fa-thumbs-down\"></i> Cancelar`,\r\n }).then((result) => result.isConfirmed)\r\n );\r\n }\r\n\r\n alertaHtml(\r\n titleAlert: string,\r\n message: string,\r\n icono: string = 'notFound01.png',\r\n timer: number = 2500\r\n ): Promise<void> {\r\n return this.preloadImage(icono).then(() => {\r\n Swal.fire({\r\n title: titleAlert,\r\n imageUrl: `assets/icon/${icono}`,\r\n imageWidth: 145,\r\n imageHeight: 125,\r\n imageAlt: 'error 404',\r\n html: `\r\n <strong>ALERTA: </strong><i class='text-red-300'>${message}</i> <span class='text-blue-600'> comuniquese con el administrador. </span>\r\n `,\r\n showConfirmButton: false,\r\n timerProgressBar: true,\r\n timer: timer,\r\n });\r\n return;\r\n });\r\n }\r\n\r\n alertaHtmlSuccess(\r\n titleAlert: string,\r\n message: string,\r\n icono: string = 'check02.png',\r\n timer: number = 2000\r\n ): Promise<void> {\r\n return this.preloadImage(icono).then(() => {\r\n Swal.fire({\r\n title: titleAlert,\r\n imageUrl: `assets/icon/${icono}`,\r\n imageWidth: 125,\r\n imageHeight: 125,\r\n imageAlt: 'success 200',\r\n html: `\r\n <strong>Alerta: </strong><b class='text-success'>${message}</b>\r\n `,\r\n showConfirmButton: false,\r\n timerProgressBar: true,\r\n timer: timer,\r\n });\r\n return;\r\n });\r\n }\r\n\r\n //notifyAlertSuccess(message: string) {\r\n // this._notyf.success({\r\n // message: message,\r\n // duration: 1500,\r\n // position: {\r\n // x: 'center',\r\n // y: 'top'\r\n // }\r\n // });\r\n //}\r\n\r\n toastrHttpResponse(response: ResponseHttpModel) {\r\n const time = 3000;\r\n const align = 'toast-top-center';\r\n if (response.isSuccess) {\r\n this.toastrService.success(response.statusMessage, response.title, {\r\n enableHtml: true,\r\n closeButton: true,\r\n progressBar: true,\r\n positionClass: align,\r\n timeOut: time,\r\n });\r\n } else {\r\n this.toastrService.error(response.statusMessage, response.title, {\r\n enableHtml: true,\r\n closeButton: true,\r\n progressBar: true,\r\n positionClass: align,\r\n timeOut: time,\r\n });\r\n }\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\r\nimport { Injectable, inject, isDevMode } from '@angular/core';\r\nimport { throwError } from 'rxjs';\r\nimport { AlertaService } from './alerta.service';\r\nimport { ErrorModel } from '../models/src/error.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorHandlerService {\r\n _serviceAlerta = inject(AlertaService);\r\n\r\n handleErrorResponse(error: HttpErrorResponse) {\r\n const err: ErrorModel = error as ErrorModel;\r\n const technicalMessage = `Error status: ${error.status}, Message: ${error.message}, URL: ${error.url}`;\r\n\r\n let userMessage = 'Ha ocurrido un error inesperado.';\r\n\r\n switch (error.status) {\r\n case HttpStatusCode.BadRequest:\r\n userMessage =\r\n 'Solicitud incorrecta (400). Verifica los datos ingresados o validaciones existentes.';\r\n break;\r\n case HttpStatusCode.Unauthorized:\r\n userMessage = 'Acceso no autorizado (401). Por favor inicia sesión.';\r\n break;\r\n case HttpStatusCode.Forbidden:\r\n userMessage = 'No tienes permisos para realizar esta acción (403).';\r\n break;\r\n case HttpStatusCode.NotFound:\r\n userMessage = 'No se encontró el recurso solicitado (404).';\r\n break;\r\n case HttpStatusCode.Conflict: // Capturar error de concurrencia\r\n userMessage =\r\n 'El registro fue modificado por otro usuario. Por favor, actualiza los datos antes de continuar.';\r\n break;\r\n case HttpStatusCode.InternalServerError:\r\n userMessage =\r\n 'Ocurrió un error en el servidor (500). Inténtalo más tarde.';\r\n break;\r\n default:\r\n userMessage = 'Un error inesperado ha ocurrido.';\r\n break;\r\n }\r\n\r\n // Mostrar mensaje para el usuario\r\n this._serviceAlerta.alertaHtml(\r\n 'Servicios de Errores',\r\n '<i>Código:</i> ' +\r\n err.status +\r\n ' <i>Message:</i> ' +\r\n userMessage +\r\n `. (${error.error})`\r\n );\r\n\r\n // Imprimir el mensaje técnico\r\n if (isDevMode()) {\r\n console.error(err);\r\n }\r\n\r\n // Retornar el error para continuar con el flujo de manejo de errores\r\n return throwError(() => new Error(technicalMessage));\r\n }\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpInterceptorFn,\r\n HttpStatusCode,\r\n} from '@angular/common/http';\r\nimport { catchError, finalize, Observable, switchMap } from 'rxjs';\r\nimport { inject } from '@angular/core';\r\nimport { AuthorizeService } from '../services/authorize.service';\r\nimport { SecurityService } from '../services/security.service';\r\nimport { ErrorHandlerService } from '../services/error-handler.service';\r\nimport { SpinnerLoadingService } from '../services/spinner-loading.service';\r\nimport { ModelToken } from '../models/src/token.model';\r\n\r\n//Update: 2024-01-29 12:00\r\n\r\nlet _activeRequest = 0;\r\n//let isRefreshing = false; // Estado de si se está refrescando el token\r\nlet pendingRequests: any[] = []; // Cola de solicitudes pendientes\r\n\r\nexport const httpAuthorizeInterceptor: HttpInterceptorFn = (req, next) => {\r\n //console.log('------ INGRESO A HTTPINTERCEPTOR -------');\r\n const _authorizeService = inject(AuthorizeService);\r\n const _securityService = inject(SecurityService);\r\n const _spinnerService = inject(SpinnerLoadingService);\r\n const _handleErrorService = inject(ErrorHandlerService);\r\n\r\n //Variables\r\n const _token = _authorizeService.getToken();\r\n const _tokenRefresh = _authorizeService.getTokenRefresh();\r\n\r\n //Generar la petición con el token\r\n const authReq = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${_token}`,\r\n },\r\n });\r\n\r\n if (_activeRequest == 0) {\r\n _spinnerService.show();\r\n }\r\n\r\n _activeRequest++;\r\n\r\n return next(authReq).pipe(\r\n catchError((error: HttpErrorResponse): Observable<HttpEvent<any>> => {\r\n // Si el error es 401\r\n if (error.status === HttpStatusCode.Unauthorized) {\r\n // Si no hay refreshToken, finalizar la sesión\r\n if (!_tokenRefresh) {\r\n _spinnerService.hide();\r\n return _handleErrorService.handleErrorResponse(\r\n new HttpErrorResponse({\r\n status: 401,\r\n statusText:\r\n 'No autorizado. El token de refresco no está disponible.',\r\n })\r\n );\r\n }\r\n\r\n // Intentar refrescar el token si no se está haciendo ya\r\n if (!_authorizeService.isRefreshing) {\r\n // Marcamos que se está refrescando el token\r\n _authorizeService.isRefreshing = true;\r\n\r\n // Intentar refrescar el token\r\n return _securityService.tokenRefresh(_tokenRefresh).pipe(\r\n switchMap((response: ModelToken) => {\r\n if (!response.token || !response.tokenRefresh) {\r\n _spinnerService.hide();\r\n return _handleErrorService.handleErrorResponse(\r\n new HttpErrorResponse({\r\n status: 401,\r\n statusText:\r\n 'No autorizado. El token de refresco ha expirado.',\r\n })\r\n );\r\n }\r\n\r\n // Recargar el token en el servicio\r\n _authorizeService.tokenReload(response);\r\n\r\n // Generar una nueva solicitud con el token actualizado\r\n const newReq = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${response.token}`,\r\n },\r\n });\r\n\r\n // Refresco completado\r\n _authorizeService.isRefreshing = false;\r\n\r\n pendingRequests.forEach((pendingReq) => {\r\n const clonedReq = pendingReq.authReq.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${_authorizeService.getToken()}`,\r\n },\r\n });\r\n\r\n // Volver a ejecutar las solicitudes pendientes con el nuevo token\r\n next(clonedReq).subscribe({\r\n next: pendingReq.next,\r\n error: pendingReq.error,\r\n complete: pendingReq.complete,\r\n });\r\n });\r\n pendingRequests = []; // Limpiar la cola\r\n\r\n return next(newReq); // Procesar la solicitud original con el nuevo token\r\n }),\r\n catchError((refreshError: HttpErrorResponse) => {\r\n // Finalizamos el refresco si hay error\r\n _authorizeService.isRefreshing = false;\r\n _spinnerService.hide();\r\n return _handleErrorService.handleErrorResponse(\r\n new HttpErrorResponse({\r\n status: 401,\r\n statusText:\r\n 'Error al refrescar el token. Redirigiendo al login.',\r\n })\r\n );\r\n }),\r\n finalize(() => {\r\n _authorizeService.isRefreshing = false;\r\n })\r\n );\r\n } else {\r\n // Si ya se está refrescando, añadir la solicitud a la cola\r\n return new Observable((observer) => {\r\n pendingRequests.push({\r\n authReq,\r\n next: observer.next.bind(observer),\r\n error: observer.error.bind(observer),\r\n complete: observer.complete.bind(observer),\r\n });\r\n });\r\n }\r\n }\r\n // Si no es un error 401, manejar otros errores\r\n return _handleErrorService.handleErrorResponse(error);\r\n }),\r\n finalize(() => {\r\n _activeRequest--;\r\n if (_activeRequest === 0) {\r\n _spinnerService.hide();\r\n }\r\n })\r\n );\r\n};\r\n","import { Component, Input } from '@angular/core';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\n@Component({\r\n selector: 'app-message-error',\r\n imports: [TagModule],\r\n templateUrl: './app-message-error.component.html',\r\n styleUrl: './app-message-error.component.scss',\r\n})\r\nexport class AppMessageErrorComponent {\r\n // Control de formulario que se pasa como input\r\n @Input() control!: AbstractControl | null;\r\n @Input() form: FormGroup | null = null;\r\n}\r\n","@if(control?.touched && control?.invalid){\r\n<div class=\"absolute dsx-error-message\">\r\n @if(control?.errors?.['required']){ El campo <strong>es requerido.</strong>\r\n } @else if(control?.errors?.['invalidDateRange']){\r\n <strong>{{ control?.errors?.['invalidDateRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['dateNotRange']){\r\n <strong>{{ control?.errors?.['dateNotRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['minlength']){ Debe tener al menos\r\n <strong>{{ control?.errors?.['minlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['maxlength']){ Debe tener como máximo\r\n <strong>{{ control?.errors?.['maxlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['min']){ El valor mínimo permitido es\r\n <strong>{{ control?.errors?.['min']?.min }}</strong\r\n >. } @else if(control?.errors?.['max']){ El valor máximo permitido es\r\n <strong>{{ control?.errors?.['max']?.max }}</strong\r\n >. } @else if(control?.errors?.['email']){ Debe ser una dirección de correo\r\n válida. } @else if(control?.errors?.['pattern']){ El campo no tiene el formato\r\n requerido. } @else{ Existe un error aún no identificado. }\r\n</div>\r\n}\r\n<!-- mensaje para formulario en general -->\r\n@if(form?.invalid && form?.touched){\r\n<div class=\"mt-2 mb-2\">\r\n @if(this.form?.errors?.['atLeastOneRequired']){\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n</div>\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { CountUpModule } from 'ngx-countup';\r\n\r\n@Component({\r\n selector: 'app-kpicard',\r\n imports: [CountUpModule],\r\n templateUrl: './kpicard.component.html',\r\n styleUrl: './kpicard.component.css',\r\n})\r\nexport class KpicardComponent {\r\n //type = input.required<string>();\r\n option = input.required<'currency' | 'integer'>();\r\n label = input.required<string>();\r\n iconType = input<string>('fa-regular fa-bell');\r\n color = input<string>();\r\n valor = input<number>(0);\r\n theme = input<string>('light');\r\n\r\n options: Record<'currency' | 'integer', any> = {\r\n currency: {\r\n startVal: 0,\r\n duration: 0.5,\r\n prefix: 'Q',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n suffix: ' GTQ', // Sufijo\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n integer: {\r\n startVal: 0,\r\n duration: 0.5,\r\n prefix: 'Cant. ',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n };\r\n\r\n // ✅ Método auxiliar para obtener la opción con seguridad\r\n getSelectedOption() {\r\n return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`\r\n }\r\n}\r\n","<div class=\"kpi-card {{ color() }}\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [options]=\"getSelectedOption()\"\r\n [class]=\"theme() === 'light' ? 'card-value-light' : 'card-value-dark'\"\r\n >0</span\r\n >\r\n <span [class]=\"theme() === 'light' ? 'card-text-light' : 'card-text-dark'\">{{\r\n label()\r\n }}</span>\r\n <i\r\n [class]=\"\r\n theme() === 'light'\r\n ? iconType() + ' icon icon-light'\r\n : iconType() + ' icon icon-dark'\r\n \"\r\n ></i>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'jsonHighlight',\r\n})\r\nexport class JsonHighlightPipe implements PipeTransform {\r\n transform(value: any): string {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n const json = JSON.stringify(value, null, 2); // Formatea el JSON con sangría\r\n\r\n // Aplica estilo y colores básicos para diferenciar claves y valores\r\n return json\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/(\".*?\"):/g, '<span class=\"json-key\">$1</span>:')\r\n .replace(/:\\s(\".*?\")/g, ': <span class=\"json-string\">$1</span>')\r\n .replace(/\\b(true|false|null)\\b/g, '<span class=\"json-boolean\">$1</span>')\r\n .replace(/:\\s(\\d+)/g, ': <span class=\"json-number\">$1</span>');\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-dsx\r\n */\r\nexport * from './lib/injections/environment.token';\r\nexport * from './lib/components/loading/loading.component';\r\nexport * from './lib/interceptors/http-authorize.interceptor';\r\nexport * from './lib/services/security.service';\r\nexport * from './lib/services/alerta.service';\r\nexport * from './lib/services/authorize.service';\r\nexport * from './lib/components';\r\nexport * from './lib/models';\r\nexport * from './lib/pipe';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -2,3 +2,4 @@ export * from './src/column.model';
2
2
  export * from './src/field-config.model';
3
3
  export * from './src/response-http.model';
4
4
  export * from './src/datevalidate.model';
5
+ export * from './src/securityParameter.model';
@@ -1,12 +1,22 @@
1
1
  import { Observable } from 'rxjs';
2
- import { ModelToken } from '../models/src/token.model';
3
2
  import { SeguridadITParameter } from '../models/src/securityParameter.model';
3
+ import { ModelToken } from '../models/src/token.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class SecurityService {
6
6
  private http;
7
7
  private environment;
8
8
  private urlApi;
9
+ /**
10
+ * Método para obtener un nuevo token de acceso utilizando un refresh token.
11
+ * @param refreshToken El refresh token que se utilizará para obtener un nuevo token de acceso.
12
+ * @returns Un Observable que emite un objeto de tipo ModelToken.
13
+ */
9
14
  tokenRefresh(refreshToken: string): Observable<ModelToken>;
15
+ /**
16
+ * Método para obtener los parámetros de seguridad.
17
+ * @param invalidCacheParam Indica si se debe invalidar la caché (opcional, por defecto es false).
18
+ * @returns Un Observable que emite un objeto de tipo SeguridadITParameter.
19
+ */
10
20
  getParameterSecurity(invalidCacheParam?: boolean): Observable<SeguridadITParameter>;
11
21
  static ɵfac: i0.ɵɵFactoryDeclaration<SecurityService, never>;
12
22
  static ɵprov: i0.ɵɵInjectableDeclaration<SecurityService>;
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-dsxlibrary",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Libreria para control de código automatizado.",
5
5
  "author": "DevSoftXela <cfuentes1985@hotmail.com>",
6
6
  "peerDependencies": {
@@ -21,25 +21,25 @@
21
21
  "types": "./index.d.ts",
22
22
  "default": "./fesm2022/ngx-dsxlibrary.mjs"
23
23
  },
24
- "./src/lib/interceptors": {
25
- "types": "./src/lib/interceptors/index.d.ts",
26
- "default": "./fesm2022/ngx-dsxlibrary-src-lib-interceptors.mjs"
27
- },
28
24
  "./src/lib/components": {
29
25
  "types": "./src/lib/components/index.d.ts",
30
26
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-components.mjs"
31
27
  },
32
- "./src/lib/pipe": {
33
- "types": "./src/lib/pipe/index.d.ts",
34
- "default": "./fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs"
28
+ "./src/lib/interceptors": {
29
+ "types": "./src/lib/interceptors/index.d.ts",
30
+ "default": "./fesm2022/ngx-dsxlibrary-src-lib-interceptors.mjs"
35
31
  },
36
32
  "./src/lib/models": {
37
33
  "types": "./src/lib/models/index.d.ts",
38
34
  "default": "./fesm2022/ngx-dsxlibrary-src-lib-models.mjs"
39
35
  },
40
- "./src/lib/tokens": {
41
- "types": "./src/lib/tokens/index.d.ts",
42
- "default": "./fesm2022/ngx-dsxlibrary-src-lib-tokens.mjs"
36
+ "./src/lib/injections": {
37
+ "types": "./src/lib/injections/index.d.ts",
38
+ "default": "./fesm2022/ngx-dsxlibrary-src-lib-injections.mjs"
39
+ },
40
+ "./src/lib/pipe": {
41
+ "types": "./src/lib/pipe/index.d.ts",
42
+ "default": "./fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs"
43
43
  },
44
44
  "./src/lib/services": {
45
45
  "types": "./src/lib/services/index.d.ts",
package/public-api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './lib/tokens/environment.token';
1
+ export * from './lib/injections/environment.token';
2
2
  export * from './lib/components/loading/loading.component';
3
3
  export * from './lib/interceptors/http-authorize.interceptor';
4
4
  export * from './lib/services/security.service';
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
- /// <amd-module name="ngx-dsxlibrary/src/lib/tokens" />
4
+ /// <amd-module name="ngx-dsxlibrary/src/lib/injections" />
5
5
  export * from './public-api';
@@ -2,3 +2,4 @@ export * from './src/column.model';
2
2
  export * from './src/field-config.model';
3
3
  export * from './src/response-http.model';
4
4
  export * from './src/datevalidate.model';
5
+ export * from './src/securityParameter.model';
@@ -0,0 +1,17 @@
1
+ export interface ParameterValue {
2
+ value: number;
3
+ }
4
+ export interface ParameterSecurity {
5
+ parameterName: string;
6
+ parameterValues: ParameterValue[];
7
+ }
8
+ export interface SeguridadITParameter {
9
+ sistemaId: number;
10
+ sistema: string;
11
+ parameterBase: string | null;
12
+ parameterSecurity: ParameterSecurity[];
13
+ }
14
+ export interface MyParameterValues {
15
+ parameterName: string;
16
+ values: number[];
17
+ }
@@ -1,4 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- //# sourceMappingURL=ngx-dsxlibrary-src-lib-tokens.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-dsxlibrary-src-lib-tokens.mjs","sources":["../../../projects/ngx-dsx/src/lib/tokens/ngx-dsxlibrary-src-lib-tokens.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG"}
Binary file
File without changes