ngx-redi-core 0.0.0-watch

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.
Files changed (93) hide show
  1. package/Helper/index.d.ts +5 -0
  2. package/Helper/package.json +3 -0
  3. package/Helper/public-api.d.ts +3 -0
  4. package/Helper/src/helpers/bag-data-subject.service.d.ts +43 -0
  5. package/Helper/src/helpers/csv.service.d.ts +33 -0
  6. package/Helper/src/helpers/data-subject.service.d.ts +32 -0
  7. package/Helper/src/models/interfaces/data-subject.interface.d.ts +6 -0
  8. package/README.md +24 -0
  9. package/RediDragDrop/index.d.ts +5 -0
  10. package/RediDragDrop/package.json +3 -0
  11. package/RediDragDrop/public-api.d.ts +4 -0
  12. package/RediDragDrop/src/models/classes/proceso-archivo-csv.d.ts +29 -0
  13. package/RediDragDrop/src/models/directives/drag-drop.directive.d.ts +43 -0
  14. package/RediDragDrop/src/modules/redi-drag-drop/redi-drag-drop.component.d.ts +188 -0
  15. package/RediDragDrop/src/modules/redi-drag-drop.module.d.ts +13 -0
  16. package/RediGrid/index.d.ts +5 -0
  17. package/RediGrid/package.json +3 -0
  18. package/RediGrid/public-api.d.ts +4 -0
  19. package/RediGrid/src/models/interfaces/cell.d.ts +37 -0
  20. package/RediGrid/src/models/interfaces/data-grid.d.ts +30 -0
  21. package/RediGrid/src/modules/redi-grid/redi-grid.component.d.ts +92 -0
  22. package/RediGrid/src/modules/redi-grid.module.d.ts +14 -0
  23. package/RediTable/index.d.ts +5 -0
  24. package/RediTable/package.json +3 -0
  25. package/RediTable/public-api.d.ts +6 -0
  26. package/RediTable/src/components/filter-data/filter-data.component.d.ts +23 -0
  27. package/RediTable/src/components/redi-table/redi-table.component.d.ts +139 -0
  28. package/RediTable/src/models/interfaces/column-definition.d.ts +18 -0
  29. package/RediTable/src/models/interfaces/data-table.d.ts +24 -0
  30. package/RediTable/src/models/interfaces/filter-item.d.ts +5 -0
  31. package/RediTable/src/models/interfaces/row-action.d.ts +24 -0
  32. package/RediTable/src/models/types/event-table.type.d.ts +5 -0
  33. package/Security/index.d.ts +5 -0
  34. package/Security/package.json +3 -0
  35. package/Security/public-api.d.ts +6 -0
  36. package/Security/src/modules/security-web-intercept/interceptors/redi-secure.interceptor.d.ts +39 -0
  37. package/Security/src/modules/security-web-intercept/models/secure-factory.model.d.ts +10 -0
  38. package/Security/src/modules/security-web-intercept/services/cifrado-basico.service.d.ts +14 -0
  39. package/Security/src/modules/security-web-intercept/services/cifrado.service.d.ts +21 -0
  40. package/Security/src/modules/security-web-intercept/services/reflection.service.d.ts +58 -0
  41. package/Security/src/modules/security.module.d.ts +11 -0
  42. package/esm2022/Helper/ngx-redi-core-Helper.mjs +5 -0
  43. package/esm2022/Helper/public-api.mjs +4 -0
  44. package/esm2022/Helper/src/helpers/bag-data-subject.service.mjs +61 -0
  45. package/esm2022/Helper/src/helpers/csv.service.mjs +69 -0
  46. package/esm2022/Helper/src/helpers/data-subject.service.mjs +34 -0
  47. package/esm2022/Helper/src/models/interfaces/data-subject.interface.mjs +2 -0
  48. package/esm2022/RediDragDrop/ngx-redi-core-RediDragDrop.mjs +5 -0
  49. package/esm2022/RediDragDrop/public-api.mjs +5 -0
  50. package/esm2022/RediDragDrop/src/models/classes/proceso-archivo-csv.mjs +132 -0
  51. package/esm2022/RediDragDrop/src/models/directives/drag-drop.directive.mjs +95 -0
  52. package/esm2022/RediDragDrop/src/modules/redi-drag-drop/redi-drag-drop.component.mjs +369 -0
  53. package/esm2022/RediDragDrop/src/modules/redi-drag-drop.module.mjs +34 -0
  54. package/esm2022/RediGrid/ngx-redi-core-RediGrid.mjs +5 -0
  55. package/esm2022/RediGrid/public-api.mjs +5 -0
  56. package/esm2022/RediGrid/src/models/interfaces/cell.mjs +2 -0
  57. package/esm2022/RediGrid/src/models/interfaces/data-grid.mjs +2 -0
  58. package/esm2022/RediGrid/src/modules/redi-grid/redi-grid.component.mjs +159 -0
  59. package/esm2022/RediGrid/src/modules/redi-grid.module.mjs +34 -0
  60. package/esm2022/RediTable/ngx-redi-core-RediTable.mjs +5 -0
  61. package/esm2022/RediTable/public-api.mjs +9 -0
  62. package/esm2022/RediTable/src/components/filter-data/filter-data.component.mjs +84 -0
  63. package/esm2022/RediTable/src/components/redi-table/redi-table.component.mjs +404 -0
  64. package/esm2022/RediTable/src/models/interfaces/column-definition.mjs +2 -0
  65. package/esm2022/RediTable/src/models/interfaces/data-table.mjs +2 -0
  66. package/esm2022/RediTable/src/models/interfaces/filter-item.mjs +2 -0
  67. package/esm2022/RediTable/src/models/interfaces/row-action.mjs +2 -0
  68. package/esm2022/RediTable/src/models/types/event-table.type.mjs +2 -0
  69. package/esm2022/Security/ngx-redi-core-Security.mjs +5 -0
  70. package/esm2022/Security/public-api.mjs +7 -0
  71. package/esm2022/Security/src/modules/security-web-intercept/interceptors/redi-secure.interceptor.mjs +88 -0
  72. package/esm2022/Security/src/modules/security-web-intercept/models/secure-factory.model.mjs +27 -0
  73. package/esm2022/Security/src/modules/security-web-intercept/services/cifrado-basico.service.mjs +51 -0
  74. package/esm2022/Security/src/modules/security-web-intercept/services/cifrado.service.mjs +33 -0
  75. package/esm2022/Security/src/modules/security-web-intercept/services/reflection.service.mjs +122 -0
  76. package/esm2022/Security/src/modules/security.module.mjs +23 -0
  77. package/esm2022/ngx-redi-core.mjs +5 -0
  78. package/esm2022/public-api.mjs +8 -0
  79. package/fesm2022/ngx-redi-core-Helper.mjs +166 -0
  80. package/fesm2022/ngx-redi-core-Helper.mjs.map +1 -0
  81. package/fesm2022/ngx-redi-core-RediDragDrop.mjs +628 -0
  82. package/fesm2022/ngx-redi-core-RediDragDrop.mjs.map +1 -0
  83. package/fesm2022/ngx-redi-core-RediGrid.mjs +196 -0
  84. package/fesm2022/ngx-redi-core-RediGrid.mjs.map +1 -0
  85. package/fesm2022/ngx-redi-core-RediTable.mjs +496 -0
  86. package/fesm2022/ngx-redi-core-RediTable.mjs.map +1 -0
  87. package/fesm2022/ngx-redi-core-Security.mjs +339 -0
  88. package/fesm2022/ngx-redi-core-Security.mjs.map +1 -0
  89. package/fesm2022/ngx-redi-core.mjs +14 -0
  90. package/fesm2022/ngx-redi-core.mjs.map +1 -0
  91. package/index.d.ts +5 -0
  92. package/package.json +57 -0
  93. package/public-api.d.ts +4 -0
@@ -0,0 +1,6 @@
1
+ /** Componentes */
2
+ export * from './src/components/redi-table/redi-table.component';
3
+ /** Modelos */
4
+ export * from './src/models/interfaces/column-definition';
5
+ export * from './src/models/interfaces/data-table';
6
+ export * from './src/models/interfaces/row-action';
@@ -0,0 +1,23 @@
1
+ import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
2
+ import { MatListOption } from '@angular/material/list';
3
+ import { FilterItem } from '../../models/interfaces/filter-item';
4
+ import * as i0 from "@angular/core";
5
+ export declare class FilterDataComponent implements AfterViewInit {
6
+ set filtrosColumnas(value: Array<FilterItem>);
7
+ _refFiltro: Array<FilterItem>;
8
+ filtros: Array<FilterItem>;
9
+ allItemControl: MatListOption;
10
+ filterEnd: EventEmitter<boolean>;
11
+ control: ElementRef;
12
+ constructor();
13
+ ngAfterViewInit(): void;
14
+ selectedChange(): void;
15
+ setAllCheck(value: boolean): void;
16
+ isAllChecked(filters: Array<FilterItem>): boolean;
17
+ changeFilter(): void;
18
+ aplicarFiltros(): void;
19
+ cancelarFiltro(): void;
20
+ loadData(): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterDataComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterDataComponent, "filter-data", never, { "filtrosColumnas": { "alias": "filtrosColumnas"; "required": false; }; }, { "filterEnd": "filterEnd"; }, never, never, true, never>;
23
+ }
@@ -0,0 +1,139 @@
1
+ /** Librerías angular */
2
+ import { ElementRef, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
3
+ import { MatPaginator } from '@angular/material/paginator';
4
+ import { MatSort, SortDirection } from '@angular/material/sort';
5
+ import { MatTableDataSource } from '@angular/material/table';
6
+ import { MatMenuTrigger } from '@angular/material/menu';
7
+ /** Modelo */
8
+ import { DataTable } from '../../models/interfaces/data-table';
9
+ import { ColumnDefinition } from '../../models/interfaces/column-definition';
10
+ import { RowAction } from '../../models/interfaces/row-action';
11
+ import { FilterDataComponent } from '../filter-data/filter-data.component';
12
+ import { CsvService } from 'ngx-redi-core/Helper';
13
+ import * as i0 from "@angular/core";
14
+ /**
15
+ * Componente que muestra los datos en una tabla
16
+ * @decorators ´@Component´
17
+ */
18
+ export declare class RediTableComponent<T extends object> implements OnChanges {
19
+ private csv;
20
+ /**
21
+ * Propiedad que indica si se pueden seleccionar las filas
22
+ */
23
+ seleccionarFilas: boolean;
24
+ /**
25
+ * Propiedad que indica si se habilitan los filtros para la tabla
26
+ */
27
+ filtrarDatos: boolean;
28
+ /**
29
+ * Propiedad que indica si se paginan los datos
30
+ */
31
+ paginar: boolean;
32
+ /**
33
+ * Propiedad que indica si se habilita el ordenamiento de datos
34
+ */
35
+ ordenarDatos: boolean;
36
+ /**
37
+ * Datos y configuración de la tabla
38
+ */
39
+ set dataTable(data: DataTable<T>);
40
+ get dataTable(): DataTable<T>;
41
+ /**
42
+ * Origen interno de datos para la tabla
43
+ */
44
+ private internalTable;
45
+ dataSource: MatTableDataSource<T>;
46
+ /**
47
+ * Objeto de la vista para el ordenamiento
48
+ */
49
+ sort: MatSort;
50
+ /**
51
+ * Objeto de la vista para la paginación
52
+ */
53
+ paginator: MatPaginator;
54
+ /**
55
+ * Contiene las columnas que se mostraran en la tabla
56
+ */
57
+ columnas: Array<string>;
58
+ /**
59
+ * Contiene los datos de las columnas
60
+ */
61
+ datosColumna: Array<ColumnDefinition>;
62
+ componenteFiltro: FilterDataComponent;
63
+ inputFiltro: ElementRef;
64
+ /**
65
+ * Crea un nuevo componente Tabla
66
+ */
67
+ constructor(csv: CsvService);
68
+ closeMenu(header: HTMLTableCellElement): void;
69
+ openMenu(header: HTMLTableCellElement): void;
70
+ /**
71
+ * Eventos que se ejecutan al iniciar
72
+ */
73
+ private actualizarTabla;
74
+ /**
75
+ * Construye los datos de las columnas para la tabla
76
+ */
77
+ private construirDatosColumna;
78
+ private generateFilterData;
79
+ /**
80
+ * Activa las columnas que se van a mostrar
81
+ */
82
+ private mostrarColumnas;
83
+ /**
84
+ * Método que ejecuta los cambios en la selección de filas
85
+ * @param currentValue - Valor actual
86
+ */
87
+ private changeSelection;
88
+ /**
89
+ * Método que valida los cambios en los datos de entrada
90
+ * @param changer - Cambios realizados en la vista
91
+ */
92
+ ngOnChanges(changes: SimpleChanges): void;
93
+ private actualizarSeleccion;
94
+ private actualizarFiltro;
95
+ private reasignarPaginacion;
96
+ private actualizarPaginacion;
97
+ /**
98
+ * Método que aplica el filtro a los datos de la tabla
99
+ * @param filtro - Evento de filtrado
100
+ */
101
+ applyFilter(filtro: string): void;
102
+ private limpiarColumnas;
103
+ /**
104
+ * Método que indica si se debe mostrar la columna de acciones
105
+ * @returns True si se debe mostrar las acciones
106
+ */
107
+ verAcciones(): boolean;
108
+ /**
109
+ * Método que inicializa el Paginador
110
+ */
111
+ private inicializarPaginador;
112
+ /**
113
+ * Indica si el ordenamiento esta activo
114
+ */
115
+ ordenamientoActivo(): boolean;
116
+ asignarOrden(column: ColumnDefinition, orden: SortDirection): void;
117
+ /** Alterna la selección de registros de la tabla */
118
+ alternarSeleccion(): void;
119
+ /**
120
+ * Indica si todo el contenido esta seleccionado
121
+ * @returns True si todo el contenido esta seleccionado
122
+ */
123
+ todoSeleccionado(): boolean;
124
+ /**
125
+ * Obtiene el estado de la etiqueta de seleccionado
126
+ * @param fila - Fila que se validara
127
+ * @returns Estado de selección en modo texto
128
+ */
129
+ validarEtiqueta(fila?: any): string;
130
+ descargarCsv(archivo: string, soloSeleccionados?: boolean): void;
131
+ onRowSelect(event: T): void;
132
+ onRowClick: EventEmitter<T>;
133
+ protected deshabilitarAccion(action: RowAction<T>, element: any): boolean;
134
+ stopPropagation(clickEvent: MouseEvent): void;
135
+ cambioFiltro(menu: MatMenuTrigger, isChange: boolean, columna: ColumnDefinition): void;
136
+ customParameter(data: T, filter: string): boolean;
137
+ static ɵfac: i0.ɵɵFactoryDeclaration<RediTableComponent<any>, never>;
138
+ static ɵcmp: i0.ɵɵComponentDeclaration<RediTableComponent<any>, "redi-table", never, { "seleccionarFilas": { "alias": "seleccionarFilas"; "required": false; }; "filtrarDatos": { "alias": "filtrarDatos"; "required": false; }; "paginar": { "alias": "paginar"; "required": false; }; "ordenarDatos": { "alias": "ordenarDatos"; "required": false; }; "dataTable": { "alias": "dataTable"; "required": false; }; }, { "onRowClick": "onRowClick"; }, never, never, true, never>;
139
+ }
@@ -0,0 +1,18 @@
1
+ import { FilterItem } from "./filter-item";
2
+ /**
3
+ * Interface que define una columna
4
+ */
5
+ export interface ColumnDefinition {
6
+ /**
7
+ Contiene la etiqueta para la columna
8
+ */
9
+ etiqueta: string;
10
+ /**
11
+ * Contiene el identificador de la columna
12
+ */
13
+ identificador: string;
14
+ filters: Array<FilterItem>;
15
+ isSort: boolean;
16
+ sortDirection: string;
17
+ haveFilters: boolean;
18
+ }
@@ -0,0 +1,24 @@
1
+ import { ColumnDefinition } from './column-definition';
2
+ import { RowAction } from './row-action';
3
+ import { SelectionModel } from '@angular/cdk/collections';
4
+ /**
5
+ * Interfaz que define la estructura de configuración y datos para una tabla
6
+ */
7
+ export interface DataTable<T> {
8
+ /**
9
+ * Contiene el arreglo con los datos
10
+ */
11
+ dataSource: Array<T>;
12
+ /**
13
+ * Contiene la definición de las columnas que se mostraran en la tabla
14
+ */
15
+ columnas: Array<ColumnDefinition>;
16
+ /**
17
+ * Contiene las acciones a realizar para los datos de la tabla
18
+ */
19
+ acciones: Array<RowAction<T>>;
20
+ /**
21
+ * Contiene los elementos seleccionados
22
+ */
23
+ seleccion: SelectionModel<T>;
24
+ }
@@ -0,0 +1,5 @@
1
+ export interface FilterItem {
2
+ name: string;
3
+ isSelected: boolean;
4
+ isVisible: boolean;
5
+ }
@@ -0,0 +1,24 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { eventTable } from '../types/event-table.type';
3
+ /**
4
+ * Interface que define una acción en el row
5
+ */
6
+ export interface RowAction<T> {
7
+ /**
8
+ * Contiene el icono para la acción
9
+ */
10
+ icono: string;
11
+ /**
12
+ * Contiene la función o acción a realizar con los datos
13
+ */
14
+ /**
15
+ * Emitter
16
+ */
17
+ emiter: EventEmitter<eventTable<T>>;
18
+ deshabilitar?: boolean;
19
+ desabilitarActionPorValores?: DeshabilitaAction;
20
+ }
21
+ export interface DeshabilitaAction {
22
+ columnaRef: string;
23
+ valoresADeshabilitar: Array<string>;
24
+ }
@@ -0,0 +1,5 @@
1
+ import { MatTableDataSource } from "@angular/material/table";
2
+ export type eventTable<T> = {
3
+ target: T;
4
+ source: MatTableDataSource<T>;
5
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ngx-redi-core/Security" />
5
+ export * from './public-api';
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/ngx-redi-core-Security.mjs"
3
+ }
@@ -0,0 +1,6 @@
1
+ export * from './src/modules/security.module';
2
+ export * from './src/modules/security-web-intercept/interceptors/redi-secure.interceptor';
3
+ export * from './src/modules/security-web-intercept/models/secure-factory.model';
4
+ export * from './src/modules/security-web-intercept/services/cifrado.service';
5
+ export * from './src/modules/security-web-intercept/services/reflection.service';
6
+ export * from './src/modules/security-web-intercept/services/cifrado-basico.service';
@@ -0,0 +1,39 @@
1
+ import 'reflect-metadata';
2
+ import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpContextToken } from '@angular/common/http';
3
+ import { Observable } from 'rxjs';
4
+ import { ReflectionService } from '../services/reflection.service';
5
+ import * as i0 from "@angular/core";
6
+ /** Request token para el contexto Http */
7
+ export declare const REQUEST_TOKEN: HttpContextToken<unknown>;
8
+ /** Response token para el contexto Http */
9
+ export declare const RESPONSE_TOKEN: HttpContextToken<unknown>;
10
+ /**
11
+ * Interceptor de seguridad que cifra y descifra información sensible en las peticiones Web
12
+ * @decorator `@Injectable()`
13
+ */
14
+ export declare class RediSecureInterceptor implements HttpInterceptor {
15
+ private readonly reflectionService;
16
+ constructor(reflectionService: ReflectionService);
17
+ intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
18
+ /**
19
+ * Regresa una respuesta HTTP descifrada
20
+ * @param request - Petición web
21
+ * @param response - Respuesta web a descifrar
22
+ * @returns Respuesta http descifrada
23
+ */
24
+ private descifrarResponse;
25
+ /**
26
+ * Cifra los datos de la petición interceptada y regresa una nueva petición con los datos cifrados
27
+ * @param request - Petición Http
28
+ * @returns - Petición con datos cifrados
29
+ */
30
+ private cifrarRequest;
31
+ /**
32
+ * Realiza el cifrado de la petición cuando los datos a cifrar se mandan en la URL
33
+ * @param request - Petición HTTP
34
+ * @returns StringQueryParams cifrados en URL
35
+ */
36
+ private cifrarPeticionUrl;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<RediSecureInterceptor, never>;
38
+ static ɵprov: i0.ɵɵInjectableDeclaration<RediSecureInterceptor>;
39
+ }
@@ -0,0 +1,10 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * Fabrica de decoradores para del modulo de seguridad
4
+ * @param cipher Indica el algoritmo de cifrado
5
+ */
6
+ export declare function secure(cipher?: string): (target: unknown, propertyKey?: string) => void;
7
+ /**
8
+ * Token para decorador de seguridad
9
+ */
10
+ export declare const TOKEN_SECURE: string;
@@ -0,0 +1,14 @@
1
+ import * as CryptoJS from 'crypto-js';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CifradoBasicoService {
4
+ secretPass: string;
5
+ llave: CryptoJS.lib.WordArray;
6
+ llave_tamanio: number;
7
+ vector: CryptoJS.lib.WordArray;
8
+ vector_tamanio: number;
9
+ iterations: number;
10
+ encrypt_dos(msg: string): string;
11
+ decrypt_dos(transitmessage: string): string;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<CifradoBasicoService, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<CifradoBasicoService>;
14
+ }
@@ -0,0 +1,21 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Servicio de cifrado y descifrado de información
4
+ * @decorator `@Injectable()`
5
+ */
6
+ export declare class CifradoService {
7
+ /**
8
+ * Método que realiza el cifrado de los datos tipo Texto
9
+ * @param data - Texto a cifrar
10
+ * @returns Datos cifrados en modo tex
11
+ */
12
+ cifrar(data: string): string;
13
+ /**
14
+ * Método que descifra el texto
15
+ * @params data - Texto a descifrar
16
+ * @returns Texto descifrado
17
+ */
18
+ descifrar(data: string): string;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<CifradoService, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<CifradoService>;
21
+ }
@@ -0,0 +1,58 @@
1
+ import { CifradoService } from './cifrado.service';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ReflectionService {
4
+ private readonly cifradoService;
5
+ constructor(cifradoService: CifradoService);
6
+ /**
7
+ * Valida si la propiedad de un objeto es segura
8
+ * @param data - Objeto a validar
9
+ * @param key - Propiedad del objeto a validar
10
+ * @returns True si es una propiedad segura
11
+ */
12
+ private isValidDecorator;
13
+ /**
14
+ * Valida si la propiedad tiene el decorador de seguridad
15
+ * @param data - Entidad objetivo
16
+ * @param key - Nombre de la propiedad
17
+ */
18
+ private propertyHasDecorator;
19
+ /**
20
+ * Valida si un objeto es seguro
21
+ * @param data - Objeto a validar
22
+ * @returns True si existe el decorador @Secure
23
+ */
24
+ private hasDecorator;
25
+ /**
26
+ * Valida si es un objeto y no esta nulo
27
+ * @param object - Objeto a validar
28
+ * @returns True si es un objeto valido
29
+ */
30
+ private isValidObject;
31
+ /**
32
+ * Cifra los datos especificados
33
+ * @param datos - Datos a cifrar
34
+ * @returns Regresa el objeto con los datos cifrados
35
+ */
36
+ cifrarDatos(datos: unknown): any;
37
+ /**
38
+ * Descifra los datos a partir de una definición
39
+ * @param datos - Datos a descifrar
40
+ * @param definition - Definición de los datos con los decoradores seguros
41
+ * @returns Datos descifrados
42
+ */
43
+ descifrarDatos(datos: unknown, definition: unknown): any;
44
+ /**
45
+ * Cifra el texto especificado
46
+ * @param datos - Contiene los datos que se cifraran
47
+ * @returns Datos cifrados
48
+ */
49
+ private cifrarTexto;
50
+ /**
51
+ * Descifra el texto proporcionado
52
+ * @param datos - Contiene los datos que se descifraran
53
+ * @returns Datos descifrados
54
+ */
55
+ private decifrarTexto;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<ReflectionService, never>;
57
+ static ɵprov: i0.ɵɵInjectableDeclaration<ReflectionService>;
58
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ /**
4
+ * Modulo de seguridad
5
+ * @decorators `@NgModule`
6
+ */
7
+ export declare class SecurityModule {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<SecurityModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SecurityModule, never, [typeof i1.CommonModule], never>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<SecurityModule>;
11
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlZGktY29yZS1IZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL0hlbHBlci9uZ3gtcmVkaS1jb3JlLUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,4 @@
1
+ export * from './src/helpers/csv.service';
2
+ export * from './src/helpers/data-subject.service';
3
+ export * from './src/helpers/bag-data-subject.service';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvSGVscGVyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9oZWxwZXJzL2Nzdi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvaGVscGVycy9kYXRhLXN1YmplY3Quc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2hlbHBlcnMvYmFnLWRhdGEtc3ViamVjdC5zZXJ2aWNlJzsiXX0=
@@ -0,0 +1,61 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { DataSubjectService } from './data-subject.service';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Servicio para compartir datos entre micro-fronts
6
+ * @decorators `@Injectable`
7
+ */
8
+ export class BagDataSubjectService {
9
+ /**
10
+ * Crea un nuevo servicio de datos compartido
11
+ */
12
+ constructor() {
13
+ this.subjects = {};
14
+ }
15
+ /**
16
+ * Obtiene el subjet dada un identificador
17
+ * @param subject Identificador
18
+ * @returns Servicio de datos
19
+ */
20
+ getSubject(subject) {
21
+ let result = Reflect.get(this.subjects, subject);
22
+ if (!result) {
23
+ result = new DataSubjectService();
24
+ Reflect.defineProperty(this.subjects, subject, { value: result });
25
+ }
26
+ return result;
27
+ }
28
+ /**
29
+ * Asigna los datos a un servicio mediante su identificador
30
+ * @param subject Identificador del servicio
31
+ * @param data Datos a emitir
32
+ */
33
+ setData(subject, data) {
34
+ return this.getSubject(subject).broadcast(data);
35
+ }
36
+ /**
37
+ * Obtiene el ultimo dato del servicio especificando su identificador
38
+ * @param subject Identificador del servicio
39
+ * @returns Dato
40
+ */
41
+ getData(subject) {
42
+ return this.getSubject(subject).data;
43
+ }
44
+ /**
45
+ * Obtiene el observable especificando el servicio
46
+ * @param subject Identificador del servicio
47
+ * @returns Observable<T>
48
+ */
49
+ getObservable(subject) {
50
+ return this.getSubject(subject).observer;
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: BagDataSubjectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
53
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: BagDataSubjectService, providedIn: 'root' }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: BagDataSubjectService, decorators: [{
56
+ type: Injectable,
57
+ args: [{
58
+ providedIn: 'root'
59
+ }]
60
+ }], ctorParameters: () => [] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFnLWRhdGEtc3ViamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZGktY29yZS9IZWxwZXIvc3JjL2hlbHBlcnMvYmFnLWRhdGEtc3ViamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRzVEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7O09BRUc7SUFDSDtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFJLE9BQWU7UUFDbEMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixFQUFLLENBQUM7WUFDckMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxPQUFPLE1BQStCLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUksT0FBZSxFQUFFLElBQU87UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBSSxPQUFlO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUksT0FBZTtRQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBeUIsQ0FBQztJQUM1RCxDQUFDOzhHQWhEVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhU3ViamVjdFNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc3ViamVjdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2lvIHBhcmEgY29tcGFydGlyIGRhdG9zIGVudHJlIG1pY3JvLWZyb250c1xyXG4gKiBAZGVjb3JhdG9ycyBgQEluamVjdGFibGVgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYWdEYXRhU3ViamVjdFNlcnZpY2Uge1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhIHVuIG51ZXZvIHNlcnZpY2lvIGRlIGRhdG9zIGNvbXBhcnRpZG9cclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc3ViamVjdHMgPSB7fTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgZWwgc3ViamV0IGRhZGEgdW4gaWRlbnRpZmljYWRvclxyXG4gICAqIEBwYXJhbSBzdWJqZWN0IElkZW50aWZpY2Fkb3JcclxuICAgKiBAcmV0dXJucyBTZXJ2aWNpbyBkZSBkYXRvc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTdWJqZWN0PFQ+KHN1YmplY3Q6IHN0cmluZyk6IERhdGFTdWJqZWN0U2VydmljZTxUPiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gUmVmbGVjdC5nZXQodGhpcy5zdWJqZWN0cywgc3ViamVjdCk7XHJcbiAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICByZXN1bHQgPSBuZXcgRGF0YVN1YmplY3RTZXJ2aWNlPFQ+KCk7XHJcbiAgICAgIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGhpcy5zdWJqZWN0cywgc3ViamVjdCwgeyB2YWx1ZTogcmVzdWx0IH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBEYXRhU3ViamVjdFNlcnZpY2U8VD47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBc2lnbmEgbG9zIGRhdG9zIGEgdW4gc2VydmljaW8gbWVkaWFudGUgc3UgaWRlbnRpZmljYWRvclxyXG4gICAqIEBwYXJhbSBzdWJqZWN0IElkZW50aWZpY2Fkb3IgZGVsIHNlcnZpY2lvXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0b3MgYSBlbWl0aXJcclxuICAgKi9cclxuICBwdWJsaWMgc2V0RGF0YTxUPihzdWJqZWN0OiBzdHJpbmcsIGRhdGE6IFQpOiB2b2lkIHtcclxuICAgIHJldHVybiB0aGlzLmdldFN1YmplY3Q8VD4oc3ViamVjdCkuYnJvYWRjYXN0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT2J0aWVuZSBlbCB1bHRpbW8gZGF0byBkZWwgc2VydmljaW8gZXNwZWNpZmljYW5kbyBzdSBpZGVudGlmaWNhZG9yXHJcbiAgICogQHBhcmFtIHN1YmplY3QgSWRlbnRpZmljYWRvciBkZWwgc2VydmljaW9cclxuICAgKiBAcmV0dXJucyBEYXRvXHJcbiAgICovXHJcbiAgcHVibGljIGdldERhdGE8VD4oc3ViamVjdDogc3RyaW5nKTogVCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJqZWN0KHN1YmplY3QpLmRhdGEgYXMgVDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgZWwgb2JzZXJ2YWJsZSBlc3BlY2lmaWNhbmRvIGVsIHNlcnZpY2lvXHJcbiAgICogQHBhcmFtIHN1YmplY3QgSWRlbnRpZmljYWRvciBkZWwgc2VydmljaW9cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFQ+XHJcbiAgICovXHJcbiAgcHVibGljIGdldE9ic2VydmFibGU8VD4oc3ViamVjdDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJqZWN0KHN1YmplY3QpLm9ic2VydmVyIGFzIE9ic2VydmFibGU8VD47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYmpldG8gY29udGVuZWRvciBkZSBsb3Mgc3ViamVjdHNcclxuICAgKi9cclxuICBwcml2YXRlIHN1YmplY3RzOiBvYmplY3Q7XHJcbn0iXX0=
@@ -0,0 +1,69 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Servicio que provee métodos para trabajar con datos CSV
5
+ */
6
+ export class CsvService {
7
+ /**
8
+ * Genera el texto CSV a partir de un archivo
9
+ * @param data- Datos a construir
10
+ * @returns CSV texto
11
+ */
12
+ generarCsv(data) {
13
+ const datos = data.map(d => {
14
+ return Object.values(d)
15
+ .filter(p => this.tipoSerializable(p))
16
+ .map(v => v.includes(',') ? `"${v}"` : v);
17
+ });
18
+ return datos.map(d => { return Object.values(d).join(','); }).join('\n');
19
+ }
20
+ /**
21
+ * Método que indica si la propiedad es serializable
22
+ * @param propiedad - Propiedad a validar
23
+ * @returns True si es una propiedad serializable
24
+ */
25
+ tipoSerializable(propiedad) {
26
+ return typeof (propiedad) !== 'object' &&
27
+ typeof (propiedad) !== 'function';
28
+ }
29
+ /**
30
+ * Descarga el CSV a partir de los datos establecidos
31
+ * @param archivo - Nombre del archivo a descargar
32
+ * @param data - Arreglo de datos a descargar
33
+ */
34
+ descargarCsv(archivo, data) {
35
+ const blob = new Blob([BOM_CSV, this.generarCsv(data)], { type: TYPE_CSV });
36
+ const link = this.generarLink(archivo, blob);
37
+ document.body.appendChild(link);
38
+ link.click();
39
+ document.body.removeChild(link);
40
+ }
41
+ /**
42
+ * Genera el link para el blob y archivo establecidos
43
+ * @param archivo - Nombre del archivo a descargar
44
+ * @param blob - Contenido del blob
45
+ * @returns link
46
+ */
47
+ generarLink(archivo, blob) {
48
+ const link = document.createElement('a');
49
+ if (link.download !== undefined) {
50
+ link.setAttribute('href', URL.createObjectURL(blob));
51
+ link.setAttribute('download', archivo);
52
+ link.style.visibility = 'hidden';
53
+ }
54
+ return link;
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CsvService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CsvService, providedIn: 'root' }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CsvService, decorators: [{
60
+ type: Injectable,
61
+ args: [{
62
+ providedIn: 'root'
63
+ }]
64
+ }] });
65
+ /** Tipo MIME CSV + Encode */
66
+ const TYPE_CSV = 'text/csv;charset=utf-8;';
67
+ /** BOM CSV */
68
+ const BOM_CSV = new Uint8Array([0xEF, 0xBB, 0xBF]);
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL0hlbHBlci9zcmMvaGVscGVycy9jc3Yuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUMzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxVQUFVO0lBQ3JCOzs7O1NBSUs7SUFDRSxVQUFVLENBQWUsSUFBYztRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsU0FBa0I7UUFDekMsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUTtZQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssVUFBVSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFlLE9BQWUsRUFBRSxJQUFjO1FBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFdBQVcsQ0FBQyxPQUFlLEVBQUUsSUFBVTtRQUM3QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBc0IsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQXBEVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUF5REQsNkJBQTZCO0FBQzdCLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDO0FBQzNDLGNBQWM7QUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBwcm92ZWUgbcOpdG9kb3MgcGFyYSB0cmFiYWphciBjb24gZGF0b3MgQ1NWXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDc3ZTZXJ2aWNlIHtcclxuICAvKipcclxuICAgICAqIEdlbmVyYSBlbCB0ZXh0byBDU1YgYSBwYXJ0aXIgZGUgdW4gYXJjaGl2b1xyXG4gICAgICogQHBhcmFtIGRhdGEtIERhdG9zIGEgY29uc3RydWlyXHJcbiAgICAgKiBAcmV0dXJucyBDU1YgdGV4dG9cclxuICAgICAqL1xyXG4gIHB1YmxpYyBnZW5lcmFyQ3N2PFQgZXh0ZW5kcyB7fT4oZGF0YTogQXJyYXk8VD4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZGF0b3MgPSBkYXRhLm1hcChkID0+IHtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZClcclxuICAgICAgICAuZmlsdGVyKHAgPT4gdGhpcy50aXBvU2VyaWFsaXphYmxlKHApKVxyXG4gICAgICAgIC5tYXAodiA9PiAodiBhcyBzdHJpbmcpLmluY2x1ZGVzKCcsJykgPyBgXCIke3Z9XCJgIDogdik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRvcy5tYXAoZCA9PiB7IHJldHVybiBPYmplY3QudmFsdWVzKGQpLmpvaW4oJywnKTsgfSkuam9pbignXFxuJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBpbmRpY2Egc2kgbGEgcHJvcGllZGFkIGVzIHNlcmlhbGl6YWJsZVxyXG4gICAqIEBwYXJhbSBwcm9waWVkYWQgLSBQcm9waWVkYWQgYSB2YWxpZGFyXHJcbiAgICogQHJldHVybnMgVHJ1ZSBzaSBlcyB1bmEgcHJvcGllZGFkIHNlcmlhbGl6YWJsZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdGlwb1NlcmlhbGl6YWJsZShwcm9waWVkYWQ6IHVua25vd24pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgKHByb3BpZWRhZCkgIT09ICdvYmplY3QnICYmXHJcbiAgICAgIHR5cGVvZiAocHJvcGllZGFkKSAhPT0gJ2Z1bmN0aW9uJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc2NhcmdhIGVsIENTViBhIHBhcnRpciBkZSBsb3MgZGF0b3MgZXN0YWJsZWNpZG9zXHJcbiAgICogQHBhcmFtIGFyY2hpdm8gLSBOb21icmUgZGVsIGFyY2hpdm8gYSBkZXNjYXJnYXJcclxuICAgKiBAcGFyYW0gZGF0YSAtIEFycmVnbG8gZGUgZGF0b3MgYSBkZXNjYXJnYXJcclxuICAgKi9cclxuICBwdWJsaWMgZGVzY2FyZ2FyQ3N2PFQgZXh0ZW5kcyB7fT4oYXJjaGl2bzogc3RyaW5nLCBkYXRhOiBBcnJheTxUPik6IHZvaWQge1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtCT01fQ1NWLCB0aGlzLmdlbmVyYXJDc3YoZGF0YSldLCB7IHR5cGU6IFRZUEVfQ1NWIH0pO1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2VuZXJhckxpbmsoYXJjaGl2bywgYmxvYik7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYSBlbCBsaW5rIHBhcmEgZWwgYmxvYiB5IGFyY2hpdm8gZXN0YWJsZWNpZG9zXHJcbiAgICogQHBhcmFtIGFyY2hpdm8gLSBOb21icmUgZGVsIGFyY2hpdm8gYSBkZXNjYXJnYXJcclxuICAgKiBAcGFyYW0gYmxvYiAtIENvbnRlbmlkbyBkZWwgYmxvYlxyXG4gICAqIEByZXR1cm5zIGxpbmtcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXJMaW5rKGFyY2hpdm86IHN0cmluZywgYmxvYjogQmxvYik6IEhUTUxBbmNob3JFbGVtZW50IHtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcbiAgICBpZiAobGluay5kb3dubG9hZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7XHJcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGFyY2hpdm8pO1xyXG4gICAgICBsaW5rLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8qKiBUaXBvIE1JTUUgQ1NWICsgRW5jb2RlICovXHJcbmNvbnN0IFRZUEVfQ1NWID0gJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JztcclxuLyoqIEJPTSBDU1YgKi9cclxuY29uc3QgQk9NX0NTViA9IG5ldyBVaW50OEFycmF5KFsweEVGLCAweEJCLCAweEJGXSk7XHJcbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Servicio para compartir datos
6
+ * @decorators `@Injectable`
7
+ */
8
+ export class DataSubjectService {
9
+ /**
10
+ * Crea un nuevo servicio de Datos compartidos
11
+ */
12
+ constructor() {
13
+ this.data = {};
14
+ this.subject = new Subject();
15
+ this.observer = this.subject.asObservable();
16
+ }
17
+ /**
18
+ * Emite los datos a los subscriptores
19
+ * @param data Datos a emitir
20
+ */
21
+ broadcast(data) {
22
+ this.data = data;
23
+ this.subject.next(data);
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DataSubjectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DataSubjectService, providedIn: 'root' }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DataSubjectService, decorators: [{
29
+ type: Injectable,
30
+ args: [{
31
+ providedIn: 'root'
32
+ }]
33
+ }], ctorParameters: () => [] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zdWJqZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL0hlbHBlci9zcmMvaGVscGVycy9kYXRhLXN1YmplY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRzNDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7O09BRUc7SUFDSDtRQUNFLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBTyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQU9EOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxJQUFPO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBdEJVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGF0YVN1YmplY3QgfSBmcm9tICcuLi9tb2RlbHMvaW50ZXJmYWNlcy9kYXRhLXN1YmplY3QuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBwYXJhIGNvbXBhcnRpciBkYXRvc1xyXG4gKiBAZGVjb3JhdG9ycyBgQEluamVjdGFibGVgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhU3ViamVjdFNlcnZpY2U8VD4gaW1wbGVtZW50cyBEYXRhU3ViamVjdDxUPiB7XHJcbiAgLyoqXHJcbiAgICogQ3JlYSB1biBudWV2byBzZXJ2aWNpbyBkZSBEYXRvcyBjb21wYXJ0aWRvc1xyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5kYXRhID0ge30gYXMgVDtcclxuICAgIHRoaXMuc3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB0aGlzLm9ic2VydmVyID0gdGhpcy5zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGllbmUgZWwgc3ViamVjdCBxdWUgZW1pdGUgZGF0b3NcclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHN1YmplY3Q6IFN1YmplY3Q8VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRlIGxvcyBkYXRvcyBhIGxvcyBzdWJzY3JpcHRvcmVzXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0b3MgYSBlbWl0aXJcclxuICAgKi9cclxuICBwdWJsaWMgYnJvYWRjYXN0KGRhdGE6IFQpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICB0aGlzLnN1YmplY3QubmV4dChkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRpZW5lIGVsIHVsdGltbyBkYXRvIGVtaXRpZG9cclxuICAgKi9cclxuICBwdWJsaWMgZGF0YTogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSAgcXVlIG5vdGlmaWNhIGxvcyBjYW1iaW9zXHJcbiAgICovXHJcbiAgcHVibGljIG9ic2VydmVyOiBPYnNlcnZhYmxlPFQ+O1xyXG59Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zdWJqZWN0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWRpLWNvcmUvSGVscGVyL3NyYy9tb2RlbHMvaW50ZXJmYWNlcy9kYXRhLXN1YmplY3QuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVN1YmplY3Q8VD4ge1xyXG4gICAgYnJvYWRjYXN0KGRhdGE6VCk6dm9pZDtcclxuICAgIGRhdGE6VDtcclxuICAgIG9ic2VydmVyOk9ic2VydmFibGU8VD47XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlZGktY29yZS1SZWRpRHJhZ0Ryb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVkaS1jb3JlL1JlZGlEcmFnRHJvcC9uZ3gtcmVkaS1jb3JlLVJlZGlEcmFnRHJvcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19