ngx-dsxlibrary 1.21.13 → 1.21.15
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/fesm2022/ngx-dsxlibrary-src-lib-components.mjs +6 -6
- package/fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs +6 -6
- package/fesm2022/ngx-dsxlibrary.mjs +577 -91
- package/fesm2022/ngx-dsxlibrary.mjs.map +1 -1
- package/ngx-dsxlibrary-1.21.15.tgz +0 -0
- package/package.json +1 -1
- package/types/ngx-dsxlibrary-src-lib-models.d.ts +61 -1
- package/types/ngx-dsxlibrary.d.ts +407 -21
- package/ngx-dsxlibrary-1.21.13.tgz +0 -0
|
Binary file
|
package/package.json
CHANGED
|
@@ -170,20 +170,80 @@ type FieldConfig<T> = {
|
|
|
170
170
|
};
|
|
171
171
|
};
|
|
172
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Modelo de respuesta HTTP estándar
|
|
175
|
+
* @interface ResponseHttpModel
|
|
176
|
+
* @description Representa la estructura de respuesta HTTP con información de estado y permisos
|
|
177
|
+
*/
|
|
173
178
|
interface ResponseHttpModel {
|
|
179
|
+
/** Indica si la operación fue exitosa */
|
|
174
180
|
isSuccess: boolean;
|
|
181
|
+
/** Código de estado HTTP */
|
|
175
182
|
statusCode: number;
|
|
183
|
+
/** Título de la respuesta */
|
|
176
184
|
title: string;
|
|
185
|
+
/** Mensaje descriptivo del estado */
|
|
177
186
|
statusMessage: string;
|
|
187
|
+
/** Indica si el usuario tiene permisos de administrador */
|
|
178
188
|
isAdmin: boolean;
|
|
179
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Respuesta de consulta de NIT
|
|
192
|
+
* @interface NITResponse
|
|
193
|
+
* @description Representa la estructura de datos devuelta al consultar un NIT
|
|
194
|
+
*/
|
|
180
195
|
interface NITResponse {
|
|
196
|
+
/** Número de Identificación Tributaria */
|
|
181
197
|
nit: string;
|
|
198
|
+
/** Nombre completo o razón social */
|
|
182
199
|
nombre: string;
|
|
200
|
+
/** Mensaje de respuesta del servicio */
|
|
183
201
|
mensaje: string;
|
|
202
|
+
/** Apellidos de la persona (si aplica) */
|
|
184
203
|
apellidos: string;
|
|
204
|
+
/** Nombres de la persona (si aplica) */
|
|
185
205
|
nombres: string;
|
|
186
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Resultado genérico de operaciones de servicio
|
|
209
|
+
* @interface ServiceResult
|
|
210
|
+
* @template T Tipo de dato que contiene la respuesta
|
|
211
|
+
* @description Envoltorio genérico para respuestas de servicios que permite manejar tanto
|
|
212
|
+
* casos exitosos con datos como casos de error sin datos
|
|
213
|
+
* @example
|
|
214
|
+
* // Sin datos (solo mensaje y estado)
|
|
215
|
+
* const error: ServiceResult<void> = {
|
|
216
|
+
* data: null,
|
|
217
|
+
* isSuccess: false,
|
|
218
|
+
* message: "Error al procesar"
|
|
219
|
+
* };
|
|
220
|
+
* @example
|
|
221
|
+
* // Con datos tipados
|
|
222
|
+
* const success: ServiceResult<Usuario> = {
|
|
223
|
+
* data: { id: 1, nombre: "Juan" },
|
|
224
|
+
* isSuccess: true,
|
|
225
|
+
* message: "Usuario obtenido"
|
|
226
|
+
* };
|
|
227
|
+
*/
|
|
228
|
+
interface ServiceResult<T> {
|
|
229
|
+
/** Datos de respuesta del tipo especificado o null si no hay datos */
|
|
230
|
+
data: T | null;
|
|
231
|
+
/** Indica si la operación fue exitosa */
|
|
232
|
+
isSuccess: boolean;
|
|
233
|
+
/** Mensaje descriptivo del resultado de la operación */
|
|
234
|
+
message: string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Alias de ServiceResult para casos sin datos
|
|
238
|
+
* @description Utilizar cuando solo se necesita retornar estado y mensaje sin datos
|
|
239
|
+
* @example
|
|
240
|
+
* const result: ServiceResultVoid = {
|
|
241
|
+
* data: null,
|
|
242
|
+
* isSuccess: false,
|
|
243
|
+
* message: "Operación fallida"
|
|
244
|
+
* };
|
|
245
|
+
*/
|
|
246
|
+
type ServiceResultVoid = ServiceResult<void>;
|
|
187
247
|
|
|
188
248
|
export { createInitialCache };
|
|
189
|
-
export type { Certificacion, Column, Complemento, Complementos, DatosEmision, DatosGenerales, Direccion, DocumentoFelResponse, Dte, Emisor, ExportColumn, FechasConversion, FieldConfig, FilterOption, Frase, Frases, Impuesto, Impuestos, InferCacheKeyType, InferCacheOptions, Item, Items, NITResponse, NumeroAutorizacion, Receptor, ResponseHttpModel, Sat, T, TipoFechaConversion, TotalImpuesto, Totales, typeModel };
|
|
249
|
+
export type { Certificacion, Column, Complemento, Complementos, DatosEmision, DatosGenerales, Direccion, DocumentoFelResponse, Dte, Emisor, ExportColumn, FechasConversion, FieldConfig, FilterOption, Frase, Frases, Impuesto, Impuestos, InferCacheKeyType, InferCacheOptions, Item, Items, NITResponse, NumeroAutorizacion, Receptor, ResponseHttpModel, Sat, ServiceResult, ServiceResultVoid, T, TipoFechaConversion, TotalImpuesto, Totales, typeModel };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i4 from '@angular/forms';
|
|
2
2
|
import { AbstractControl, FormGroup, FormBuilder, ValidatorFn, ValidationErrors } from '@angular/forms';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { OnInit, ElementRef, InjectionToken,
|
|
4
|
+
import { OnInit, ElementRef, InjectionToken, Provider, PipeTransform } from '@angular/core';
|
|
5
5
|
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
6
6
|
import * as rxjs from 'rxjs';
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
@@ -46,6 +46,7 @@ import * as i35 from 'primeng/toast';
|
|
|
46
46
|
import * as i36 from 'primeng/togglebutton';
|
|
47
47
|
import * as i37 from 'primeng/tooltip';
|
|
48
48
|
import { SweetAlertTheme, SweetAlertIcon, SweetAlertResult } from 'sweetalert2';
|
|
49
|
+
import { Router } from '@angular/router';
|
|
49
50
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
50
51
|
import { CookieService } from 'ngx-cookie-service';
|
|
51
52
|
|
|
@@ -189,15 +190,181 @@ declare class SelectAllOnFocusDirective {
|
|
|
189
190
|
|
|
190
191
|
declare const CACHE_KEYS: InjectionToken<Record<string, string>>;
|
|
191
192
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Esquema de configuración del entorno - Fuente única de verdad (Single Source of Truth)
|
|
195
|
+
*
|
|
196
|
+
* Este objeto define todos los campos requeridos y sus tipos esperados para la configuración del entorno.
|
|
197
|
+
* Sirve como referencia automática para:
|
|
198
|
+
* - Generar el tipo TypeScript `EnvironmentConfig`
|
|
199
|
+
* - Validar la presencia de campos requeridos
|
|
200
|
+
* - Validar los tipos de datos en runtime
|
|
201
|
+
* - Detectar automáticamente campos que requieren validación especial (URLs)
|
|
202
|
+
*
|
|
203
|
+
* **Cómo agregar una nueva propiedad:**
|
|
204
|
+
* 1. Agrégala a este objeto con su tipo: 'string', 'boolean' o 'number'
|
|
205
|
+
* 2. Todo lo demás se actualiza automáticamente (tipo TypeScript, validaciones, etc.)
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* const ENVIRONMENT_SCHEMA = {
|
|
210
|
+
* production: 'boolean' as const,
|
|
211
|
+
* myAppUrl: 'string' as const,
|
|
212
|
+
* apiTimeout: 'number' as const, // ← Agregar nueva propiedad
|
|
213
|
+
* } as const;
|
|
214
|
+
* ```
|
|
215
|
+
*
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
declare const ENVIRONMENT_SCHEMA: {
|
|
219
|
+
readonly production: "boolean";
|
|
220
|
+
readonly myAppUrl: "string";
|
|
221
|
+
readonly SeguridadITApiUrl: "string";
|
|
222
|
+
readonly tokenName: "string";
|
|
223
|
+
readonly tokenNameRF: "string";
|
|
224
|
+
readonly sessionStatus: "string";
|
|
225
|
+
readonly refreshTokenExpiry: "string";
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Tipo que define la configuración del entorno de la aplicación.
|
|
229
|
+
*
|
|
230
|
+
* Este tipo se genera automáticamente a partir de `ENVIRONMENT_SCHEMA` usando
|
|
231
|
+
* TypeScript mapped types. No es necesario mantenerlo manualmente.
|
|
232
|
+
*
|
|
233
|
+
* **Características:**
|
|
234
|
+
* - Se sincroniza automáticamente con ENVIRONMENT_SCHEMA
|
|
235
|
+
* - Proporciona autocompletado en IDEs
|
|
236
|
+
* - Garantiza type-safety en tiempo de compilación
|
|
237
|
+
* - Se valida en runtime usando `provideEnvironment()`
|
|
238
|
+
*
|
|
239
|
+
* **Campos requeridos:**
|
|
240
|
+
* @property production - Indica si la aplicación está en modo producción
|
|
241
|
+
* @property myAppUrl - URL base de la aplicación principal (debe incluir protocolo http:// o https://)
|
|
242
|
+
* @property SeguridadITApiUrl - URL base de la API de seguridad (debe incluir protocolo http:// o https://)
|
|
243
|
+
* @property tokenName - Nombre del token de acceso en el almacenamiento local/sesión
|
|
244
|
+
* @property tokenNameRF - Nombre del refresh token en el almacenamiento local/sesión
|
|
245
|
+
* @property sessionStatus - Nombre de la clave para el estado de sesión
|
|
246
|
+
* @property refreshTokenExpiry - Tiempo de expiración del refresh token (ej: "7d", "24h")
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* // En tu archivo environment.ts
|
|
251
|
+
* import { EnvironmentConfig } from '@devsoftxela/ngx-dsx';
|
|
252
|
+
*
|
|
253
|
+
* export const environment: EnvironmentConfig = {
|
|
254
|
+
* production: false,
|
|
255
|
+
* myAppUrl: 'http://localhost:4200/',
|
|
256
|
+
* SeguridadITApiUrl: 'http://localhost:5000/',
|
|
257
|
+
* tokenName: 'access_token',
|
|
258
|
+
* tokenNameRF: 'refresh_token',
|
|
259
|
+
* sessionStatus: 'session_status',
|
|
260
|
+
* refreshTokenExpiry: '7d'
|
|
261
|
+
* };
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
type EnvironmentConfig = {
|
|
265
|
+
[K in keyof typeof ENVIRONMENT_SCHEMA]: (typeof ENVIRONMENT_SCHEMA)[K] extends 'string' ? string : (typeof ENVIRONMENT_SCHEMA)[K] extends 'boolean' ? boolean : (typeof ENVIRONMENT_SCHEMA)[K] extends 'number' ? number : never;
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Token de inyección de dependencias para la configuración del entorno.
|
|
269
|
+
*
|
|
270
|
+
* Este token se utiliza para inyectar la configuración del entorno en servicios y componentes.
|
|
271
|
+
* **IMPORTANTE:** No uses este token directamente en providers. En su lugar, usa la función
|
|
272
|
+
* `provideEnvironment()` que incluye validación automática.
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```typescript
|
|
276
|
+
* // ✅ Forma correcta - En tu configuración de app
|
|
277
|
+
* import { provideEnvironment } from '@devsoftxela/ngx-dsx';
|
|
278
|
+
* import { environment } from './environments/environment';
|
|
279
|
+
*
|
|
280
|
+
* export const appConfig: ApplicationConfig = {
|
|
281
|
+
* providers: [
|
|
282
|
+
* provideEnvironment(environment), // ← Con validación automática
|
|
283
|
+
* ]
|
|
284
|
+
* };
|
|
285
|
+
* ```
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* // ✅ Forma correcta - Inyectar en servicios
|
|
290
|
+
* import { inject } from '@angular/core';
|
|
291
|
+
* import { ENVIRONMENT, EnvironmentConfig } from '@devsoftxela/ngx-dsx';
|
|
292
|
+
*
|
|
293
|
+
* export class MiServicio {
|
|
294
|
+
* private environment: EnvironmentConfig = inject(ENVIRONMENT);
|
|
295
|
+
* }
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```typescript
|
|
300
|
+
* // ❌ Forma incorrecta - Sin validación
|
|
301
|
+
* providers: [
|
|
302
|
+
* { provide: ENVIRONMENT, useValue: environment } // ← Sin validación
|
|
303
|
+
* ]
|
|
304
|
+
* ```
|
|
305
|
+
*
|
|
306
|
+
* @see {@link provideEnvironment} para configurar con validación
|
|
307
|
+
* @see {@link EnvironmentConfig} para la estructura de datos
|
|
308
|
+
*/
|
|
200
309
|
declare const ENVIRONMENT: InjectionToken<EnvironmentConfig>;
|
|
310
|
+
/**
|
|
311
|
+
* Valida que la configuración del entorno esté completa y correctamente configurada.
|
|
312
|
+
*
|
|
313
|
+
* Esta función verifica que:
|
|
314
|
+
* - La configuración del entorno no sea null o undefined
|
|
315
|
+
* - Todas las propiedades requeridas estén presentes y no estén vacías
|
|
316
|
+
* - Las URLs tengan un formato válido
|
|
317
|
+
*
|
|
318
|
+
* @param environment - Configuración del entorno a validar
|
|
319
|
+
* @throws Error si alguna validación falla, con un mensaje descriptivo del problema
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```typescript
|
|
323
|
+
* const config: EnvironmentConfig = { ... };
|
|
324
|
+
* validateEnvironmentConfig(config);
|
|
325
|
+
* ```
|
|
326
|
+
*/
|
|
327
|
+
declare function validateEnvironmentConfig(environment: EnvironmentConfig): void;
|
|
328
|
+
/**
|
|
329
|
+
* Proporciona una configuración de entorno validada para la inyección de dependencias.
|
|
330
|
+
*
|
|
331
|
+
* Esta función crea un provider que valida automáticamente la configuración del entorno
|
|
332
|
+
* cuando la aplicación se inicializa. Si la configuración es inválida, lanza un error
|
|
333
|
+
* descriptivo que indica qué está mal configurado.
|
|
334
|
+
*
|
|
335
|
+
* @param environment - Configuración del entorno a proporcionar
|
|
336
|
+
* @returns Provider de Angular configurado con la validación integrada
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```typescript
|
|
340
|
+
* // En app.config.ts o main.ts
|
|
341
|
+
* import { provideEnvironment } from './path/to/environment.token';
|
|
342
|
+
* import { environment } from './environments/environment';
|
|
343
|
+
*
|
|
344
|
+
* export const appConfig: ApplicationConfig = {
|
|
345
|
+
* providers: [
|
|
346
|
+
* provideEnvironment(environment),
|
|
347
|
+
* // ... otros providers
|
|
348
|
+
* ]
|
|
349
|
+
* };
|
|
350
|
+
* ```
|
|
351
|
+
*
|
|
352
|
+
* @example
|
|
353
|
+
* ```typescript
|
|
354
|
+
* // Para módulos (NgModule)
|
|
355
|
+
* import { provideEnvironment } from './path/to/environment.token';
|
|
356
|
+
* import { environment } from './environments/environment';
|
|
357
|
+
*
|
|
358
|
+
* @NgModule({
|
|
359
|
+
* providers: [
|
|
360
|
+
* provideEnvironment(environment),
|
|
361
|
+
* // ... otros providers
|
|
362
|
+
* ]
|
|
363
|
+
* })
|
|
364
|
+
* export class AppModule { }
|
|
365
|
+
* ```
|
|
366
|
+
*/
|
|
367
|
+
declare function provideEnvironment(environment: EnvironmentConfig): Provider;
|
|
201
368
|
|
|
202
369
|
interface ParameterValue {
|
|
203
370
|
value: number;
|
|
@@ -400,20 +567,80 @@ type FieldConfig<T> = {
|
|
|
400
567
|
};
|
|
401
568
|
};
|
|
402
569
|
|
|
570
|
+
/**
|
|
571
|
+
* Modelo de respuesta HTTP estándar
|
|
572
|
+
* @interface ResponseHttpModel
|
|
573
|
+
* @description Representa la estructura de respuesta HTTP con información de estado y permisos
|
|
574
|
+
*/
|
|
403
575
|
interface ResponseHttpModel {
|
|
576
|
+
/** Indica si la operación fue exitosa */
|
|
404
577
|
isSuccess: boolean;
|
|
578
|
+
/** Código de estado HTTP */
|
|
405
579
|
statusCode: number;
|
|
580
|
+
/** Título de la respuesta */
|
|
406
581
|
title: string;
|
|
582
|
+
/** Mensaje descriptivo del estado */
|
|
407
583
|
statusMessage: string;
|
|
584
|
+
/** Indica si el usuario tiene permisos de administrador */
|
|
408
585
|
isAdmin: boolean;
|
|
409
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* Respuesta de consulta de NIT
|
|
589
|
+
* @interface NITResponse
|
|
590
|
+
* @description Representa la estructura de datos devuelta al consultar un NIT
|
|
591
|
+
*/
|
|
410
592
|
interface NITResponse {
|
|
593
|
+
/** Número de Identificación Tributaria */
|
|
411
594
|
nit: string;
|
|
595
|
+
/** Nombre completo o razón social */
|
|
412
596
|
nombre: string;
|
|
597
|
+
/** Mensaje de respuesta del servicio */
|
|
413
598
|
mensaje: string;
|
|
599
|
+
/** Apellidos de la persona (si aplica) */
|
|
414
600
|
apellidos: string;
|
|
601
|
+
/** Nombres de la persona (si aplica) */
|
|
415
602
|
nombres: string;
|
|
416
603
|
}
|
|
604
|
+
/**
|
|
605
|
+
* Resultado genérico de operaciones de servicio
|
|
606
|
+
* @interface ServiceResult
|
|
607
|
+
* @template T Tipo de dato que contiene la respuesta
|
|
608
|
+
* @description Envoltorio genérico para respuestas de servicios que permite manejar tanto
|
|
609
|
+
* casos exitosos con datos como casos de error sin datos
|
|
610
|
+
* @example
|
|
611
|
+
* // Sin datos (solo mensaje y estado)
|
|
612
|
+
* const error: ServiceResult<void> = {
|
|
613
|
+
* data: null,
|
|
614
|
+
* isSuccess: false,
|
|
615
|
+
* message: "Error al procesar"
|
|
616
|
+
* };
|
|
617
|
+
* @example
|
|
618
|
+
* // Con datos tipados
|
|
619
|
+
* const success: ServiceResult<Usuario> = {
|
|
620
|
+
* data: { id: 1, nombre: "Juan" },
|
|
621
|
+
* isSuccess: true,
|
|
622
|
+
* message: "Usuario obtenido"
|
|
623
|
+
* };
|
|
624
|
+
*/
|
|
625
|
+
interface ServiceResult<T> {
|
|
626
|
+
/** Datos de respuesta del tipo especificado o null si no hay datos */
|
|
627
|
+
data: T | null;
|
|
628
|
+
/** Indica si la operación fue exitosa */
|
|
629
|
+
isSuccess: boolean;
|
|
630
|
+
/** Mensaje descriptivo del resultado de la operación */
|
|
631
|
+
message: string;
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Alias de ServiceResult para casos sin datos
|
|
635
|
+
* @description Utilizar cuando solo se necesita retornar estado y mensaje sin datos
|
|
636
|
+
* @example
|
|
637
|
+
* const result: ServiceResultVoid = {
|
|
638
|
+
* data: null,
|
|
639
|
+
* isSuccess: false,
|
|
640
|
+
* message: "Operación fallida"
|
|
641
|
+
* };
|
|
642
|
+
*/
|
|
643
|
+
type ServiceResultVoid = ServiceResult<void>;
|
|
417
644
|
|
|
418
645
|
declare class DsxAddToolsModule {
|
|
419
646
|
static ɵfac: i0.ɵɵFactoryDeclaration<DsxAddToolsModule, never>;
|
|
@@ -556,21 +783,39 @@ declare class AlertaService {
|
|
|
556
783
|
static ɵprov: i0.ɵɵInjectableDeclaration<AlertaService>;
|
|
557
784
|
}
|
|
558
785
|
|
|
559
|
-
|
|
786
|
+
/**
|
|
787
|
+
* Datos de token de autenticación
|
|
788
|
+
* @interface DataToken
|
|
789
|
+
* @description Contiene los tokens de acceso y refresco junto con la fecha de expiración
|
|
790
|
+
*/
|
|
791
|
+
interface DataToken {
|
|
792
|
+
/** Token de acceso JWT para autenticación en las solicitudes */
|
|
560
793
|
token: string;
|
|
794
|
+
/** Token de refresco para obtener un nuevo token de acceso */
|
|
561
795
|
tokenRefresh: string;
|
|
796
|
+
/** Fecha de expiración del token de refresco */
|
|
562
797
|
refreshTokenExpiry: Date;
|
|
563
798
|
}
|
|
799
|
+
/**
|
|
800
|
+
* Modelo de seguridad JWT decodificado
|
|
801
|
+
* @interface jwtSecurityModel
|
|
802
|
+
* @description Representa los datos extraídos y validados del token JWT
|
|
803
|
+
*/
|
|
564
804
|
interface jwtSecurityModel {
|
|
805
|
+
/** Nombre de usuario del titular del token */
|
|
565
806
|
userName: string | null;
|
|
807
|
+
/** Array de roles asignados al usuario */
|
|
566
808
|
role: string[] | null;
|
|
809
|
+
/** Indica si el token ha expirado o es una promesa que lo valida */
|
|
567
810
|
isTokenExpired: boolean | Promise<boolean>;
|
|
568
811
|
}
|
|
569
812
|
|
|
570
813
|
declare class AuthorizeService {
|
|
571
814
|
_cookieService: CookieService;
|
|
815
|
+
_router: Router;
|
|
572
816
|
helperJwt: JwtHelperService;
|
|
573
817
|
private _isRefreshing;
|
|
818
|
+
private _securityService;
|
|
574
819
|
private environment;
|
|
575
820
|
private getCookieOptions;
|
|
576
821
|
private setCookie;
|
|
@@ -591,7 +836,8 @@ declare class AuthorizeService {
|
|
|
591
836
|
*/
|
|
592
837
|
getTokenRefresh(): string | null;
|
|
593
838
|
setLastActivity(): void;
|
|
594
|
-
|
|
839
|
+
getLastActivity(): number | null;
|
|
840
|
+
tokenReload(tokens: DataToken): void;
|
|
595
841
|
getTokenValid(token: string | null): boolean;
|
|
596
842
|
/**
|
|
597
843
|
* Obtiene los valores principales del JWT almacenado (usuario, roles y estado).
|
|
@@ -609,6 +855,70 @@ declare class AuthorizeService {
|
|
|
609
855
|
* const info = this.authorize.getTokenValues;
|
|
610
856
|
*/
|
|
611
857
|
get getTokenValues(): jwtSecurityModel;
|
|
858
|
+
/**
|
|
859
|
+
* Verifica si el usuario está autenticado.
|
|
860
|
+
*
|
|
861
|
+
* La validación se basa en la existencia del refresh token en cookies.
|
|
862
|
+
* El navegador gestiona automáticamente la expiración de las cookies.
|
|
863
|
+
*
|
|
864
|
+
* @returns `true` si el usuario está autenticado, `false` en caso contrario
|
|
865
|
+
*/
|
|
866
|
+
isAuthenticated(): boolean;
|
|
867
|
+
/**
|
|
868
|
+
* Cierra la sesión del usuario de forma segura y controlada.
|
|
869
|
+
*
|
|
870
|
+
* Este método implementa un proceso de logout robusto que:
|
|
871
|
+
* 1. Verifica el estado actual de la sesión y la ubicación del usuario
|
|
872
|
+
* 2. Intenta revocar el refresh token en el servidor (si existe)
|
|
873
|
+
* 3. Limpia todos los datos de sesión local
|
|
874
|
+
* 4. Redirige al usuario a la página de login
|
|
875
|
+
*
|
|
876
|
+
* **Casos manejados:**
|
|
877
|
+
* - Usuario ya en página de login: Solo limpia datos locales
|
|
878
|
+
* - Sin refresh token: Limpia datos locales y redirige
|
|
879
|
+
* - Con refresh token: Intenta revocarlo, luego limpia y redirige
|
|
880
|
+
* - Error al revocar: Limpia datos locales de todas formas (seguridad)
|
|
881
|
+
* - Modo desarrollo: Maneja tokens de prueba correctamente
|
|
882
|
+
*
|
|
883
|
+
* **Importante:** Este método es **asíncrono** en su ejecución interna pero no retorna una promesa.
|
|
884
|
+
* La redirección al login ocurre después de limpiar la sesión, independientemente del resultado de la revocación.
|
|
885
|
+
*
|
|
886
|
+
* @example
|
|
887
|
+
* ```typescript
|
|
888
|
+
* // Uso básico desde un componente
|
|
889
|
+
* this.authorizeService.logout();
|
|
890
|
+
*
|
|
891
|
+
* // Uso con navegación posterior controlada
|
|
892
|
+
* this.authorizeService.logout();
|
|
893
|
+
* // La redirección al login es automática
|
|
894
|
+
* ```
|
|
895
|
+
*
|
|
896
|
+
* @see {@link clearSessionData} para el proceso de limpieza de datos
|
|
897
|
+
* @see {@link SecurityService.tokenRevok} para la revocación en el servidor
|
|
898
|
+
*/
|
|
899
|
+
logout(): void;
|
|
900
|
+
/**
|
|
901
|
+
* Limpia todos los datos de sesión del usuario de forma segura.
|
|
902
|
+
*
|
|
903
|
+
* Este método privado se encarga de:
|
|
904
|
+
* - Eliminar todas las cookies relacionadas con autenticación
|
|
905
|
+
* - Limpiar el localStorage completamente
|
|
906
|
+
* - Redirigir al usuario a la página de login
|
|
907
|
+
*
|
|
908
|
+
* **Cookies eliminadas:**
|
|
909
|
+
* - Token de acceso (access token)
|
|
910
|
+
* - Token de refresco (refresh token)
|
|
911
|
+
* - Estado de sesión (session status)
|
|
912
|
+
*
|
|
913
|
+
* **Consideraciones:**
|
|
914
|
+
* - Se eliminan las cookies con path '/' para asegurar su borrado
|
|
915
|
+
* - En producción, también se considera el dominio configurado
|
|
916
|
+
* - El localStorage se limpia completamente por seguridad
|
|
917
|
+
* - La redirección es forzada incluso si hay errores previos
|
|
918
|
+
*
|
|
919
|
+
* @private
|
|
920
|
+
*/
|
|
921
|
+
private clearSessionData;
|
|
612
922
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizeService, never>;
|
|
613
923
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizeService>;
|
|
614
924
|
}
|
|
@@ -803,22 +1113,98 @@ declare class ParameterValuesService<T extends string = string> {
|
|
|
803
1113
|
static ɵprov: i0.ɵɵInjectableDeclaration<ParameterValuesService<any>>;
|
|
804
1114
|
}
|
|
805
1115
|
|
|
1116
|
+
/**
|
|
1117
|
+
* Servicio de seguridad que gestiona la autenticación y autorización mediante tokens JWT.
|
|
1118
|
+
*
|
|
1119
|
+
* Este servicio proporciona métodos para:
|
|
1120
|
+
* - Refrescar tokens de acceso
|
|
1121
|
+
* - Revocar tokens de refresco
|
|
1122
|
+
* - Obtener parámetros de seguridad
|
|
1123
|
+
*
|
|
1124
|
+
* @example
|
|
1125
|
+
* ```typescript
|
|
1126
|
+
* constructor(private securityService: SecurityService) {}
|
|
1127
|
+
*
|
|
1128
|
+
* refreshToken() {
|
|
1129
|
+
* this.securityService.tokenRefresh(this.refreshToken)
|
|
1130
|
+
* .subscribe(data => console.log(data));
|
|
1131
|
+
* }
|
|
1132
|
+
* ```
|
|
1133
|
+
*/
|
|
806
1134
|
declare class SecurityService {
|
|
1135
|
+
/** Servicio HttpClient para realizar peticiones HTTP */
|
|
807
1136
|
private http;
|
|
1137
|
+
/**
|
|
1138
|
+
* Configuración del entorno inyectada mediante el token ENVIRONMENT.
|
|
1139
|
+
* La validación se realiza automáticamente al usar provideEnvironment().
|
|
1140
|
+
*/
|
|
808
1141
|
private environment;
|
|
1142
|
+
/** URL base de la API JWT construida desde la configuración del entorno */
|
|
809
1143
|
private urlApi;
|
|
1144
|
+
private SeguridadITApi;
|
|
810
1145
|
/**
|
|
811
|
-
*
|
|
812
|
-
*
|
|
813
|
-
*
|
|
1146
|
+
* Obtiene un nuevo token de acceso utilizando un refresh token válido.
|
|
1147
|
+
*
|
|
1148
|
+
* Este método envía una solicitud POST al endpoint de refresco de token
|
|
1149
|
+
* y devuelve un nuevo par de tokens (access token y refresh token).
|
|
1150
|
+
*
|
|
1151
|
+
* @param refreshToken - El refresh token válido para obtener un nuevo token de acceso
|
|
1152
|
+
* @returns Observable que emite un objeto DataToken con el nuevo par de tokens
|
|
1153
|
+
*
|
|
1154
|
+
* @example
|
|
1155
|
+
* ```typescript
|
|
1156
|
+
* this.securityService.tokenRefresh('your-refresh-token')
|
|
1157
|
+
* .subscribe({
|
|
1158
|
+
* next: (data) => console.log('Nuevo token:', data.accessToken),
|
|
1159
|
+
* error: (err) => console.error('Error al refrescar token:', err)
|
|
1160
|
+
* });
|
|
1161
|
+
* ```
|
|
814
1162
|
*/
|
|
815
|
-
tokenRefresh(refreshToken: string): Observable<
|
|
1163
|
+
tokenRefresh(refreshToken: string): Observable<DataToken>;
|
|
816
1164
|
/**
|
|
817
|
-
*
|
|
818
|
-
*
|
|
819
|
-
*
|
|
1165
|
+
* Revoca un refresh token para invalidarlo y prevenir su uso futuro.
|
|
1166
|
+
*
|
|
1167
|
+
* Este método envía una solicitud POST al endpoint de revocación de token
|
|
1168
|
+
* para invalidar permanentemente el refresh token proporcionado.
|
|
1169
|
+
*
|
|
1170
|
+
* @param refreshToken - El refresh token que se desea revocar
|
|
1171
|
+
* @returns Observable que emite true si la revocación fue exitosa, false en caso contrario
|
|
1172
|
+
*
|
|
1173
|
+
* @example
|
|
1174
|
+
* ```typescript
|
|
1175
|
+
* this.securityService.tokenRevok('your-refresh-token')
|
|
1176
|
+
* .subscribe({
|
|
1177
|
+
* next: (success) => {
|
|
1178
|
+
* if (success) console.log('Token revocado exitosamente');
|
|
1179
|
+
* },
|
|
1180
|
+
* error: (err) => console.error('Error al revocar token:', err)
|
|
1181
|
+
* });
|
|
1182
|
+
* ```
|
|
1183
|
+
*/
|
|
1184
|
+
tokenRevok(refreshToken: string): Observable<boolean>;
|
|
1185
|
+
/**
|
|
1186
|
+
* Obtiene los parámetros de seguridad de la aplicación desde el servidor.
|
|
1187
|
+
*
|
|
1188
|
+
* Este método recupera la configuración de seguridad que incluye políticas de contraseñas,
|
|
1189
|
+
* tiempos de expiración de sesión, y otras configuraciones relacionadas con la seguridad.
|
|
1190
|
+
*
|
|
1191
|
+
* @param invalidCacheParam - Indica si se debe invalidar la caché del servidor.
|
|
1192
|
+
* Si es true, fuerza al servidor a devolver los datos más recientes
|
|
1193
|
+
* sin usar la caché. Por defecto es false.
|
|
1194
|
+
* @returns Observable que emite un objeto SeguridadITParameter con la configuración de seguridad
|
|
1195
|
+
*
|
|
1196
|
+
* @example
|
|
1197
|
+
* ```typescript
|
|
1198
|
+
* // Obtener parámetros usando caché
|
|
1199
|
+
* this.securityService.getParameterSecurity()
|
|
1200
|
+
* .subscribe(params => console.log('Parámetros:', params));
|
|
1201
|
+
*
|
|
1202
|
+
* // Obtener parámetros sin usar caché
|
|
1203
|
+
* this.securityService.getParameterSecurity(true)
|
|
1204
|
+
* .subscribe(params => console.log('Parámetros actualizados:', params));
|
|
1205
|
+
* ```
|
|
820
1206
|
*/
|
|
821
|
-
getParameterSecurity(invalidCacheParam?: boolean): Observable<SeguridadITParameter
|
|
1207
|
+
getParameterSecurity(invalidCacheParam?: boolean): Observable<ServiceResult<SeguridadITParameter>>;
|
|
822
1208
|
static ɵfac: i0.ɵɵFactoryDeclaration<SecurityService, never>;
|
|
823
1209
|
static ɵprov: i0.ɵɵInjectableDeclaration<SecurityService>;
|
|
824
1210
|
}
|
|
@@ -1099,5 +1485,5 @@ declare function nitValidator(control: AbstractControl): ValidationErrors | null
|
|
|
1099
1485
|
*/
|
|
1100
1486
|
declare function cuiValidator(control: AbstractControl): ValidationErrors | null;
|
|
1101
1487
|
|
|
1102
|
-
export { AlertaService, AppMessageErrorComponent, AuthorizeService, CACHE_KEYS, CacheService, DsxAddToolsModule, ENVIRONMENT, EndpointService, ErrorHandlerService, INITIAL_PARAMETERS, IconDsxComponent, JsonHighlightPipe, JsonValuesDebujComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, NavbarDsxComponent, OnlyRangoPatternDirective, ParameterValuesService, PrimeNgModule, SecurityService, SelectAllOnFocusDirective, TruncatePipe, UtilityAddService, atLeastOneFieldRequiredValidator, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, httpAuthorizeInterceptor, nitValidator };
|
|
1103
|
-
export type { Certificacion, Column, Complemento, Complementos, DatosEmision, DatosGenerales, Direccion, DocumentoFelResponse, Dte, Emisor, EnvironmentConfig, ExportColumn, FechasConversion, FieldConfig, FilterOption, Frase, Frases, Impuesto, Impuestos, InferCacheKeyType, InferCacheOptions, Item, Items, MyParameterValues, NITResponse, NumeroAutorizacion, ParameterSecurity, ParameterValue, Receptor, ResponseHttpModel, Sat, SeguridadITParameter, T, TipoFechaConversion, TotalImpuesto, Totales, typeModel };
|
|
1488
|
+
export { AlertaService, AppMessageErrorComponent, AuthorizeService, CACHE_KEYS, CacheService, DsxAddToolsModule, ENVIRONMENT, EndpointService, ErrorHandlerService, INITIAL_PARAMETERS, IconDsxComponent, JsonHighlightPipe, JsonValuesDebujComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, NavbarDsxComponent, OnlyRangoPatternDirective, ParameterValuesService, PrimeNgModule, SecurityService, SelectAllOnFocusDirective, TruncatePipe, UtilityAddService, atLeastOneFieldRequiredValidator, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, httpAuthorizeInterceptor, nitValidator, provideEnvironment, validateEnvironmentConfig };
|
|
1489
|
+
export type { Certificacion, Column, Complemento, Complementos, DatosEmision, DatosGenerales, Direccion, DocumentoFelResponse, Dte, Emisor, EnvironmentConfig, ExportColumn, FechasConversion, FieldConfig, FilterOption, Frase, Frases, Impuesto, Impuestos, InferCacheKeyType, InferCacheOptions, Item, Items, MyParameterValues, NITResponse, NumeroAutorizacion, ParameterSecurity, ParameterValue, Receptor, ResponseHttpModel, Sat, SeguridadITParameter, ServiceResult, ServiceResultVoid, T, TipoFechaConversion, TotalImpuesto, Totales, typeModel };
|
|
Binary file
|