@jvsoft/utils 0.0.3 → 0.0.5

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 (54) hide show
  1. package/fesm2022/jvsoft-utils-src-functions.mjs +1053 -0
  2. package/fesm2022/jvsoft-utils-src-functions.mjs.map +1 -0
  3. package/fesm2022/jvsoft-utils-src-interfaces.mjs +6 -0
  4. package/fesm2022/jvsoft-utils-src-interfaces.mjs.map +1 -0
  5. package/fesm2022/jvsoft-utils-src-pipes.mjs +290 -0
  6. package/fesm2022/jvsoft-utils-src-pipes.mjs.map +1 -0
  7. package/fesm2022/jvsoft-utils.mjs +47 -269
  8. package/fesm2022/jvsoft-utils.mjs.map +1 -1
  9. package/functions/email.d.ts +2 -0
  10. package/functions/file.d.ts +1 -1
  11. package/functions/index.d.ts +1 -16
  12. package/functions/mat-form-controls/autocomplete.d.ts +1 -1
  13. package/functions/mat-form-controls/index.d.ts +1 -0
  14. package/functions/public-api.d.ts +16 -0
  15. package/interfaces/index.d.ts +1 -2
  16. package/interfaces/public-api.d.ts +1 -0
  17. package/package.json +15 -3
  18. package/pipes/index.d.ts +1 -7
  19. package/pipes/public-api.d.ts +8 -0
  20. package/pipes/tipo-valor-funcion.pipe.d.ts +9 -0
  21. package/src/functions/base64.d.ts +2 -0
  22. package/src/functions/browser.d.ts +1 -0
  23. package/src/functions/crypto-js.d.ts +2 -0
  24. package/src/functions/date.d.ts +3 -0
  25. package/src/functions/email.d.ts +2 -0
  26. package/src/functions/file.d.ts +10 -0
  27. package/src/functions/forms.d.ts +10 -0
  28. package/src/functions/http-client.d.ts +2 -0
  29. package/src/functions/index.d.ts +5 -0
  30. package/src/functions/local-storage.d.ts +29 -0
  31. package/src/functions/mat-form-controls/autocomplete.d.ts +21 -0
  32. package/src/functions/mat-form-controls/index.d.ts +2 -0
  33. package/src/functions/number.d.ts +1 -0
  34. package/src/functions/object-transformation.d.ts +2 -0
  35. package/src/functions/objects-arrays.d.ts +26 -0
  36. package/src/functions/public-api.d.ts +16 -0
  37. package/src/functions/string.d.ts +1 -0
  38. package/src/functions/sweetalert.d.ts +5 -0
  39. package/src/functions/utiles.d.ts +1 -0
  40. package/src/interfaces/datos.d.ts +4 -0
  41. package/src/interfaces/index.d.ts +5 -0
  42. package/src/interfaces/public-api.d.ts +1 -0
  43. package/src/pipes/data-en-lista.pipe.d.ts +8 -0
  44. package/src/pipes/date-diff-string.pipe.d.ts +17 -0
  45. package/src/pipes/filtro.pipe.d.ts +18 -0
  46. package/src/pipes/form-control-is-required.pipe.d.ts +9 -0
  47. package/src/pipes/index.d.ts +5 -0
  48. package/src/pipes/json-parse.pipe.d.ts +7 -0
  49. package/src/pipes/no-sanitize.pipe.d.ts +10 -0
  50. package/src/pipes/public-api.d.ts +8 -0
  51. package/src/pipes/tipo-valor-funcion.pipe.d.ts +9 -0
  52. package/src/pipes/zero-fill.pipe.d.ts +8 -0
  53. package/functions/formatear-pdfmake.d.ts +0 -39
  54. package/interfaces/otros.d.ts +0 -2
@@ -4,7 +4,7 @@ import { startWith, debounceTime, tap, isObservable, switchMap, of, finalize } f
4
4
  import { map } from 'rxjs/operators';
5
5
  import { Buffer } from 'buffer';
6
6
  import CryptoJS from 'crypto-js';
7
- import { formatDate, formatNumber } from '@angular/common';
7
+ import { formatDate } from '@angular/common';
8
8
  import { saveAs } from 'file-saver';
9
9
  import { ReactiveFormConfig } from '@rxweb/reactive-form-validators';
10
10
  import swal from 'sweetalert2';
@@ -376,6 +376,10 @@ function changeSelectApi(control, queryService, formControl, tipo, dataExtra = {
376
376
  });
377
377
  }
378
378
 
379
+ function seleccionarTextoInput(event) {
380
+ event.target.select();
381
+ }
382
+
379
383
  function b64Encode(val) {
380
384
  return Buffer.from(val, 'binary').toString('base64');
381
385
  }
@@ -446,6 +450,20 @@ function formatearFechaCadena(fecha) {
446
450
  return new Date(year, month, day);
447
451
  }
448
452
 
453
+ function maskEmail(email) {
454
+ const [user, domain] = email.split("@");
455
+ if (user.length <= 2) {
456
+ return `${user[0]}***@${domain}`; // 🔹 Si el usuario es muy corto, no se oculta nada
457
+ }
458
+ if (user.length <= 4) {
459
+ return `${user[0]}***${user.slice(-1)}@${domain}`; // 🔹 Muestra 1 al inicio y 1 al final
460
+ }
461
+ return `${user.slice(0, 2)}***${user.slice(-2)}@${domain}`; // 🔹 Muestra 2 al inicio y 2 al final
462
+ }
463
+ function isEmail(email) {
464
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
465
+ }
466
+
449
467
  const mimeTypes = {
450
468
  // Imágenes
451
469
  'jpg': 'image/jpeg',
@@ -558,7 +576,7 @@ function convertirBytes(valor, unidadSalida = null, incluirUnidad = true) {
558
576
  }
559
577
  return resultado;
560
578
  }
561
- function downLoadFileStream(data, type, nombreArchivo = undefined) {
579
+ function downLoadFileStream(data, type, nombreArchivo) {
562
580
  const blob = new Blob([data], { type });
563
581
  saveAs(blob, nombreArchivo);
564
582
  }
@@ -1030,272 +1048,6 @@ function verificarRUC(ruc) {
1030
1048
  return false;
1031
1049
  }
1032
1050
 
1033
- // @ts-ignore
1034
- function tipoValorFuncion(datoParam, ...param) {
1035
- if (typeof datoParam === 'function') {
1036
- return datoParam(...param);
1037
- }
1038
- return datoParam;
1039
- }
1040
-
1041
- function imprimirCelda(data, tipo = null, opcAdicionales = {}) {
1042
- let texto = data;
1043
- // if (typeof data)
1044
- switch (tipo) {
1045
- case 'money':
1046
- case 'number':
1047
- case 'integer':
1048
- let formatoNumero = (tipo == 'money' ? '1.2-2' : (tipo == 'number' ? '1.0-2' : '1.0-0'));
1049
- texto = data * 1;
1050
- if (opcAdicionales?.format) {
1051
- formatoNumero = opcAdicionales.format;
1052
- }
1053
- texto = formatNumber(texto, 'es-PE', formatoNumero);
1054
- break;
1055
- case 'date':
1056
- case 'datetime':
1057
- case 'time':
1058
- let formatoFecha = (tipo == 'date' ? 'dd/MM/yyyy' : (tipo == 'time' ? 'HH:mm:ss' : 'dd/MM/yyyy HH:mm'));
1059
- if (!opcAdicionales?.alignment) {
1060
- opcAdicionales.alignment = 'center';
1061
- }
1062
- if (opcAdicionales?.format) {
1063
- formatoFecha = opcAdicionales.format;
1064
- }
1065
- texto = texto ? formatDate(data, formatoFecha, 'es-PE') : null;
1066
- break;
1067
- default:
1068
- break;
1069
- }
1070
- opcAdicionales['text'] = texto ?? ' ';
1071
- return opcAdicionales;
1072
- }
1073
- function generarDesdeMantenimiento(tabla) {
1074
- const celdasHeaderDetalle = [];
1075
- const tHead = [];
1076
- const titUsar = columnasValidas(tabla.titulos);
1077
- const camposTotales = titUsar.filter(titulo => titulo.reporte && titulo.reporte.totalizar).map(titulo => titulo.property);
1078
- const sumaObj = sumarObjetos(tabla.contenido, camposTotales);
1079
- if (tabla.numeracion) {
1080
- tHead.push(imprimirCelda('Nº', null, { style: 'thSmall', ...tabla.opcionesPdfmake?.titulo }));
1081
- }
1082
- titUsar.forEach(dT => {
1083
- if (tabla.titulosMayusculas) {
1084
- dT.label = dT.label.toUpperCase();
1085
- }
1086
- const opcionesPdfMakeTitulo = {
1087
- ...tabla.opcionesPdfmake?.titulo,
1088
- ...dT.reporte?.opcionesPdfmake?.titulo
1089
- };
1090
- tHead.push(imprimirCelda(dT.label.replace('<br>', ' '), null, { style: 'thSmall', ...opcionesPdfMakeTitulo }));
1091
- });
1092
- if (!tabla.sinTitulos) {
1093
- if (tabla.prependTitle) {
1094
- tabla.prependTitle.forEach((filaAdic) => {
1095
- celdasHeaderDetalle.push(filaAdic);
1096
- });
1097
- // celdasHeaderDetalle.concat(tabla.prependTitle);
1098
- }
1099
- celdasHeaderDetalle.push(tHead);
1100
- if (tabla.appendTitle) {
1101
- tabla.appendTitle.forEach((filaAdic) => {
1102
- celdasHeaderDetalle.push(filaAdic);
1103
- });
1104
- // celdasHeaderDetalle.concat(tabla.appendTitle);
1105
- }
1106
- }
1107
- let celdasBodyDetalle = [];
1108
- tabla.contenido.forEach((dataProd, idxProd) => {
1109
- const tBody = [];
1110
- if (tabla.numeracion) {
1111
- tBody.push(imprimirCelda(idxProd + 1, 'number', {
1112
- style: tabla.resaltarNumeracion == false ? 'tdSmall' : 'thSmall',
1113
- alignment: 'center',
1114
- rowSpan: tabla.detalle?.length > 0 ? 2 : 1,
1115
- ...tabla.opcionesPdfmake?.cuerpo
1116
- }));
1117
- }
1118
- titUsar.forEach(dT => {
1119
- let add;
1120
- if (dT.transformarDirecto) {
1121
- add = dT.transformarDirecto(dataProd);
1122
- }
1123
- else {
1124
- let txtImprimir = dataProd[dT.property];
1125
- if (dT.transformar)
1126
- txtImprimir = dT.transformar(dataProd);
1127
- const opcionesPdfMakeCuerpo = {
1128
- ...{
1129
- format: dT.format,
1130
- },
1131
- ...tabla.opcionesPdfmake?.cuerpo,
1132
- ...dT.reporte?.opcionesPdfmake?.cuerpo,
1133
- };
1134
- switch (dT.type) {
1135
- case 'date':
1136
- add = imprimirCelda(txtImprimir, 'date', {
1137
- style: 'tdSmall',
1138
- ...opcionesPdfMakeCuerpo
1139
- });
1140
- break;
1141
- case 'number':
1142
- add = imprimirCelda(txtImprimir, 'number', {
1143
- style: 'tdSmall',
1144
- ...opcionesPdfMakeCuerpo
1145
- });
1146
- break;
1147
- case 'money':
1148
- add = imprimirCelda(txtImprimir, 'money', {
1149
- style: 'tdSmall',
1150
- alignment: 'right',
1151
- ...opcionesPdfMakeCuerpo
1152
- });
1153
- break;
1154
- default:
1155
- add = imprimirCelda(txtImprimir, null, { style: 'tdSmall', ...opcionesPdfMakeCuerpo });
1156
- }
1157
- if (dT.cssClasses) {
1158
- dT.cssClasses.forEach((clase) => {
1159
- // @ts-ignore
1160
- add = { ...add, alignment: clase.replace('text-', '') };
1161
- });
1162
- }
1163
- }
1164
- tBody.push(add);
1165
- });
1166
- celdasBodyDetalle.push(tBody);
1167
- if (tabla.detalle?.length > 0) {
1168
- const tBody2 = [];
1169
- const lineasBody2 = [];
1170
- if (tabla.numeracion)
1171
- tBody2.push({});
1172
- titUsar.forEach(dT => tBody2.push({ text: dT.property }));
1173
- tabla.detalle.forEach((campoDet) => {
1174
- if (campoDet.label)
1175
- lineasBody2.push(JSON.parse(JSON.stringify(campoDet.label)));
1176
- if (dataProd[campoDet.campo]) {
1177
- lineasBody2.push(generarDesdeMantenimiento({
1178
- ...campoDet, contenido: dataProd[campoDet.campo]
1179
- }));
1180
- }
1181
- });
1182
- tBody2[tabla.numeracion ? 1 : 0] = {
1183
- colSpan: titUsar.length,
1184
- style: 'tdSmall',
1185
- stack: lineasBody2,
1186
- };
1187
- celdasBodyDetalle.push(tBody2);
1188
- }
1189
- });
1190
- const filaTotales = [];
1191
- if (tabla.numeracion) {
1192
- filaTotales.push(imprimirCelda('', null, { border: [false, false, false, false] }));
1193
- }
1194
- titUsar.forEach(titulo => {
1195
- if (titulo.reporte && titulo.reporte.totalizar) {
1196
- camposTotales.push(titulo.property);
1197
- let txtImprimirTotal = sumaObj[titulo.property] ?? 0;
1198
- if (titulo.reporte?.opcionesPdfmake?.total) {
1199
- txtImprimirTotal = tipoValorFuncion(titulo.reporte?.opcionesPdfmake?.total, titulo);
1200
- console.warn(txtImprimirTotal);
1201
- }
1202
- else if (typeof titulo.reporte.totalizar === 'object') {
1203
- if (typeof titulo.reporte.totalizar.transformar === 'function') {
1204
- txtImprimirTotal = titulo.reporte.totalizar.transformar(titulo);
1205
- }
1206
- else if (titulo.reporte.totalizar?.campoTotal) {
1207
- txtImprimirTotal = tabla.contenido[0] ? tabla.contenido[0][titulo.reporte.totalizar?.campoTotal] : '';
1208
- }
1209
- // txtImprimirTotal = titulo.reporte.transformar(titulo)
1210
- }
1211
- // @ts-ignore
1212
- const tipoCol = titulo.type;
1213
- filaTotales.push(imprimirCelda(txtImprimirTotal, tipoCol, {
1214
- bold: true, style: 'thSmall', alignment: 'right',
1215
- }));
1216
- }
1217
- else {
1218
- filaTotales.push(imprimirCelda('', null, { border: [false, false, false, false] }));
1219
- }
1220
- });
1221
- if (camposTotales && camposTotales.length > 0) {
1222
- celdasBodyDetalle = celdasBodyDetalle.concat([filaTotales]);
1223
- }
1224
- let filaTabla = celdasHeaderDetalle.concat(celdasBodyDetalle);
1225
- const tablaHeaderPedido = {
1226
- margin: tabla.margin ?? [0, 5, 0, 10],
1227
- table: {
1228
- dontBreakRows: true,
1229
- headerRows: tabla.filasTitulos ?? 1,
1230
- widths: anchoCols(celdasBodyDetalle.length > 0 ? celdasBodyDetalle : celdasHeaderDetalle, tabla.idxResto ?? [], tabla.idxAnchoValor ?? []),
1231
- body: filaTabla,
1232
- },
1233
- layout: tabla.sinBordes ? 'noBorders' : tabla.customLayout ?? undefined
1234
- };
1235
- if (tabla.separado) {
1236
- return {
1237
- titulos: celdasHeaderDetalle,
1238
- cuerpo: celdasBodyDetalle,
1239
- completo: tablaHeaderPedido,
1240
- };
1241
- }
1242
- // console.log(JSON.stringify(tablaHeaderPedido))
1243
- return tablaHeaderPedido;
1244
- }
1245
- function anchoCols(dataCant, idxResto = [], idxAnchoValor = []) {
1246
- const retorno = [];
1247
- if (Array.isArray(dataCant)) {
1248
- if (dataCant.length === 0)
1249
- return [];
1250
- dataCant[0].forEach((_, idx) => {
1251
- retorno.push(Array.isArray(idxResto) && idxResto.includes(idx) ? '*' : 'auto');
1252
- });
1253
- }
1254
- else {
1255
- for (let idx = 0; idx < dataCant; idx++) {
1256
- if (Array.isArray(idxResto)) {
1257
- retorno.push(idxResto.includes(idx) ? '*' : 'auto');
1258
- }
1259
- else {
1260
- retorno.push('*');
1261
- }
1262
- }
1263
- }
1264
- idxAnchoValor.forEach(({ idx, valor }) => {
1265
- if (idx == 'todos') {
1266
- retorno.fill(valor);
1267
- }
1268
- else {
1269
- retorno[idx] = valor;
1270
- }
1271
- });
1272
- return retorno;
1273
- }
1274
- /**
1275
- * Funciones PRIVADAS
1276
- */
1277
- function verificarColumnaTablaMantenimiento(titulo) {
1278
- return titulo.visible !== false && !titulo.ocultarReporte && (!titulo.reporte || !titulo.reporte.ocultar);
1279
- }
1280
- function columnasValidas(titulos) {
1281
- // Filtrar títulos visibles y válidos para el reporte
1282
- return titulos.map(titulo => ({
1283
- ...titulo,
1284
- visible: titulo.visible ?? true, // Asignar `true` si `visible` es `undefined`
1285
- })).filter(titulo => {
1286
- return (titulo.visible &&
1287
- !titulo.ocultarReporte &&
1288
- (!titulo.reporte || !titulo.reporte.ocultar));
1289
- });
1290
- }
1291
-
1292
- var formatearPdfmake = /*#__PURE__*/Object.freeze({
1293
- __proto__: null,
1294
- anchoCols: anchoCols,
1295
- generarDesdeMantenimiento: generarDesdeMantenimiento,
1296
- imprimirCelda: imprimirCelda
1297
- });
1298
-
1299
1051
  class DataModel {
1300
1052
  modelosChk = {}; // Usar any para valores dinámicos
1301
1053
  checkbox;
@@ -1656,6 +1408,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
1656
1408
  args: [{ name: 'noSanitize' }]
1657
1409
  }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
1658
1410
 
1411
+ class TipoValorFuncionPipe {
1412
+ transform(datoParam, defaultValue, ...param) {
1413
+ if (datoParam === undefined || datoParam === null) {
1414
+ return defaultValue;
1415
+ }
1416
+ if (typeof datoParam === 'function') {
1417
+ return datoParam(...param);
1418
+ }
1419
+ return datoParam;
1420
+ }
1421
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: TipoValorFuncionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1422
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.7", ngImport: i0, type: TipoValorFuncionPipe, isStandalone: true, name: "tipoValorFuncion" });
1423
+ }
1424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImport: i0, type: TipoValorFuncionPipe, decorators: [{
1425
+ type: Pipe,
1426
+ args: [{
1427
+ name: 'tipoValorFuncion',
1428
+ standalone: true, // Para usarlo en standalone components
1429
+ }]
1430
+ }] });
1431
+ function tipoValorFuncion(datoParam, defaultValue, ...param) {
1432
+ return new TipoValorFuncionPipe().transform(datoParam, defaultValue, ...param);
1433
+ }
1434
+
1659
1435
  class ZeroFillPipe {
1660
1436
  transform(value, digitos, ...args) {
1661
1437
  let s = value + '';
@@ -1677,6 +1453,8 @@ function zeroFill(value, digitos, ...args) {
1677
1453
  return new ZeroFillPipe().transform(value, digitos, args);
1678
1454
  }
1679
1455
 
1456
+ // export * from './otros';
1457
+
1680
1458
  /*
1681
1459
  * Public API Surface of utils
1682
1460
  */
@@ -1688,5 +1466,5 @@ function zeroFill(value, digitos, ...args) {
1688
1466
  * Generated bundle index. Do not edit.
1689
1467
  */
1690
1468
 
1691
- export { DataEnListaPipe, DataModel, DateDiffStringPipe, FiltroPipe, FormControlIsRequiredPipe, JsonParsePipe, NoSanitizePipe, formatearPdfmake as PdfMake, ZeroFillPipe, b64Decode, b64Encode, buscarPorCampo, changeSelect, changeSelectApi, changeSelectData, changeSelectDataApi, convertirBytes, dataEnLista, dateDiffString, deepClone, deepMerge, delLocalStorage, desencriptar, downLoadFileStream, encriptar, esNumero, establecerQuitarRequired, formControlIsRequired, formatearFecha, formatearFechaCadena, formatearFechaFormato, generateRandomString, getBrowserName, getCambiarPwd, getDataArchivoFromPath, getFormValidationErrors, getLocalStorage, getUniqueValues, getUniqueValuesByProperty, inicializarVariablesSessionStorage, jwtToken, jwtTokenData, jwtTokenExpiracion, jwtTokenExpiracionFaltante, localStorageKeys, markAsTouchedWithoutEmitEvent, mensajeAlerta, mensajeConfirmacion, mensajeTimer, mensajeToast, mensajesDeError, mensajesErrorFormControl, mostrarValorEnBusqueda, objectPropertiesBoolean, objectPropertiesToType, obtenerMimeType, ordenarArray, ordenarPorPropiedad, ordenarPorPropiedades, roundToDecimal, sanitizarNombreArchivo, setCambiarPwd, setJwtTokenData, setLocalStorage, sumarObjetos, sumarPropiedades, tipoValorFuncion, toFormData, verificarRUC, zeroFill };
1469
+ export { DataEnListaPipe, DataModel, DateDiffStringPipe, FiltroPipe, FormControlIsRequiredPipe, JsonParsePipe, NoSanitizePipe, TipoValorFuncionPipe, ZeroFillPipe, b64Decode, b64Encode, buscarPorCampo, changeSelect, changeSelectApi, changeSelectData, changeSelectDataApi, convertirBytes, dataEnLista, dateDiffString, deepClone, deepMerge, delLocalStorage, desencriptar, downLoadFileStream, encriptar, esNumero, establecerQuitarRequired, formControlIsRequired, formatearFecha, formatearFechaCadena, formatearFechaFormato, generateRandomString, getBrowserName, getCambiarPwd, getDataArchivoFromPath, getFormValidationErrors, getLocalStorage, getUniqueValues, getUniqueValuesByProperty, inicializarVariablesSessionStorage, isEmail, jwtToken, jwtTokenData, jwtTokenExpiracion, jwtTokenExpiracionFaltante, localStorageKeys, markAsTouchedWithoutEmitEvent, maskEmail, mensajeAlerta, mensajeConfirmacion, mensajeTimer, mensajeToast, mensajesDeError, mensajesErrorFormControl, mostrarValorEnBusqueda, objectPropertiesBoolean, objectPropertiesToType, obtenerMimeType, ordenarArray, ordenarPorPropiedad, ordenarPorPropiedades, roundToDecimal, sanitizarNombreArchivo, seleccionarTextoInput, setCambiarPwd, setJwtTokenData, setLocalStorage, sumarObjetos, sumarPropiedades, tipoValorFuncion, toFormData, verificarRUC, zeroFill };
1692
1470
  //# sourceMappingURL=jvsoft-utils.mjs.map