@factor_ec/utils 5.0.8 → 6.0.0
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/README.md +1 -1
- package/fesm2022/factor_ec-utils.mjs +1089 -457
- package/fesm2022/factor_ec-utils.mjs.map +1 -1
- package/package.json +5 -12
- package/types/factor_ec-utils.d.ts +894 -0
- package/index.d.ts +0 -5
- package/lib/array.service.d.ts +0 -6
- package/lib/color.service.d.ts +0 -58
- package/lib/csv.service.d.ts +0 -88
- package/lib/date.service.d.ts +0 -6
- package/lib/file-picker.service.d.ts +0 -10
- package/lib/files.service.d.ts +0 -14
- package/lib/google-tag-manager.service.d.ts +0 -18
- package/lib/graphql.service.d.ts +0 -12
- package/lib/models/auth-token-payload.d.ts +0 -6
- package/lib/models/auth-token.d.ts +0 -4
- package/lib/models/currency.d.ts +0 -6
- package/lib/models/error.d.ts +0 -6
- package/lib/models/language.d.ts +0 -4
- package/lib/models/login.d.ts +0 -4
- package/lib/models/operation.d.ts +0 -4
- package/lib/models/option.d.ts +0 -5
- package/lib/models/user.d.ts +0 -5
- package/lib/object.service.d.ts +0 -7
- package/lib/storage.service.d.ts +0 -12
- package/lib/string.service.d.ts +0 -19
- package/lib/validators/ec/identification-type.d.ts +0 -1
- package/lib/validators/ec/identification-validator.d.ts +0 -2
- package/public-api.d.ts +0 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factor_ec-utils.mjs","sources":["../../../projects/utils/src/lib/array.service.ts","../../../projects/utils/src/lib/color.service.ts","../../../projects/utils/src/lib/csv.service.ts","../../../projects/utils/src/lib/date.service.ts","../../../projects/utils/src/lib/files.service.ts","../../../projects/utils/src/lib/file-picker.service.ts","../../../projects/utils/src/lib/google-tag-manager.service.ts","../../../projects/utils/src/lib/string.service.ts","../../../projects/utils/src/lib/graphql.service.ts","../../../projects/utils/src/lib/object.service.ts","../../../projects/utils/src/lib/storage.service.ts","../../../projects/utils/src/lib/validators/ec/identification-type.ts","../../../projects/utils/src/lib/validators/ec/identification-validator.ts","../../../projects/utils/src/factor_ec-utils.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ArrayService {\n public merge(arrays: any[], prop: string): any[] {\n const merged: any = {};\n arrays.forEach(arr => {\n arr.forEach((item: any) => {\n merged[item[prop]] = Object.assign({}, merged[item[prop]], item);\n });\n });\n return Object.values(merged);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ColorService {\n L: number[];\n S: number[];\n hueRanges: { min: number; max: number }[];\n\n constructor() {\n const options: any = {};\n let LS = [options.lightness, options.saturation].map(function (param) {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return Array.isArray(param) ? param.concat() : [param];\n });\n\n this.L = LS[0];\n this.S = LS[1];\n\n if (typeof options.hue === 'number') {\n options.hue = { min: options.hue, max: options.hue };\n }\n if (typeof options.hue === 'object' && !Array.isArray(options.hue)) {\n options.hue = [options.hue];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range: {\n min: number;\n max: number;\n }) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max,\n };\n });\n }\n\n /**\n * BKDR Hash (modified version)\n *\n * @param str string to hash\n */\n hash(str: string): number {\n let seed = 131;\n let seed2 = 137;\n let hash = 0;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n const maxSafeInteger: number = Math.round(9007199254740991 / seed2);\n for (let i = 0; i < str.length; i++) {\n if (hash > maxSafeInteger) {\n hash = Math.round(hash / seed2);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n }\n\n /**\n * Convert RGB Array to HEX\n *\n * @param RGBArray - [R, G, B]\n * @returns 6 digits hex starting with #\n */\n rgb2hex(RGBArray: number[]): string {\n let hex = '#';\n RGBArray.forEach(function (value) {\n if (value < 16) {\n hex += 0;\n }\n hex += value.toString(16);\n });\n return hex;\n }\n\n /**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param H Hue ∈ [0, 360)\n * @param S Saturation ∈ [0, 1]\n * @param L Lightness ∈ [0, 1]\n * @returns R, G, B ∈ [0, 255]\n */\n hsl2rgb(H: number, S: number, L: number): number[] {\n H /= 360;\n\n let q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n let p = 2 * L - q;\n\n return [H + 1 / 3, H, H - 1 / 3].map(function (color) {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n } else if (color < 0.5) {\n color = q;\n } else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n }\n\n /**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param str string to hash\n * @returns [h, s, l]\n */\n hsl(str: string): any[] {\n let H;\n let S;\n let L;\n let hash = this.hash(str);\n\n if (this.hueRanges.length) {\n let range = this.hueRanges[hash % this.hueRanges.length];\n let hueResolution = 727; // note that 727 is a prime\n H =\n (((hash / this.hueRanges.length) % hueResolution) *\n (range.max - range.min)) /\n hueResolution +\n range.min;\n } else {\n H = hash % 359; // note that 359 is a prime\n }\n hash = Math.round(hash / 360);\n S = this.S[hash % this.S.length];\n hash = Math.round(hash / this.S.length);\n L = this.L[hash % this.L.length];\n\n return [H, S, L];\n }\n\n /**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param str string to hash\n * @returns [r, g, b]\n */\n rgb(str: string): number[] {\n let hsl = this.hsl(str);\n return this.hsl2rgb(hsl[0], hsl[1], hsl[2]);\n }\n\n /**\n * Returns the hash in hex\n *\n * @param str string to hash\n * @returns hex with #\n */\n hex(str: string): string {\n let rgb = this.rgb(str);\n return this.rgb2hex(rgb);\n }\n}\n","import { Injectable } from '@angular/core';\n\nexport interface CsvParsed {\n header: string[];\n content: string[][];\n}\n\nexport interface Options {\n filename: string;\n fieldSeparator: string;\n quoteStrings: string;\n decimalSeparator: string;\n showLabels: boolean;\n showTitle: boolean;\n title: string;\n useTextFile: boolean;\n useBom: boolean;\n headers: string[];\n useKeysAsHeaders: boolean;\n}\n\nexport class CsvConfigConsts {\n public static EOL = '\\r\\n';\n public static BOM = '\\ufeff';\n\n public static DEFAULT_FIELD_SEPARATOR = ',';\n public static DEFAULT_DECIMAL_SEPARATOR = '.';\n public static DEFAULT_QUOTE = '\"';\n public static DEFAULT_SHOW_TITLE = false;\n public static DEFAULT_TITLE = 'My Generated Report';\n public static DEFAULT_FILENAME = 'generated';\n public static DEFAULT_SHOW_LABELS = false;\n public static DEFAULT_USE_TEXT_FILE = false;\n public static DEFAULT_USE_BOM = true;\n public static DEFAULT_HEADER: string[] = [];\n public static DEFAULT_KEYS_AS_HEADERS = false;\n}\n\nexport const ConfigDefaults: Options = {\n filename: CsvConfigConsts.DEFAULT_FILENAME,\n fieldSeparator: CsvConfigConsts.DEFAULT_FIELD_SEPARATOR,\n quoteStrings: CsvConfigConsts.DEFAULT_QUOTE,\n decimalSeparator: CsvConfigConsts.DEFAULT_DECIMAL_SEPARATOR,\n showLabels: CsvConfigConsts.DEFAULT_SHOW_LABELS,\n showTitle: CsvConfigConsts.DEFAULT_SHOW_TITLE,\n title: CsvConfigConsts.DEFAULT_TITLE,\n useTextFile: CsvConfigConsts.DEFAULT_USE_TEXT_FILE,\n useBom: CsvConfigConsts.DEFAULT_USE_BOM,\n headers: CsvConfigConsts.DEFAULT_HEADER,\n useKeysAsHeaders: CsvConfigConsts.DEFAULT_KEYS_AS_HEADERS\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CsvService {\n private _data: any[] = [];\n private _options: Options;\n private _csv = '';\n\n get options(): Options {\n return this._options;\n }\n\n set options(options: Partial<Options>) {\n this._options = this.objectAssign({}, ConfigDefaults, options);\n }\n\n constructor() {\n this._options = this.objectAssign({}, ConfigDefaults);\n }\n /**\n * Generate and Download Csv\n */\n generate(jsonData: any, shouldReturnCsv = false): void | any {\n // Make sure to reset csv data on each run\n this._csv = '';\n\n this._parseData(jsonData);\n\n if (this._options.useBom) {\n this._csv += CsvConfigConsts.BOM;\n }\n\n if (this._options.showTitle) {\n this._csv += this._options.title + '\\r\\n\\n';\n }\n\n this._getHeaders();\n this._getBody();\n\n if (this._csv == '') {\n console.log('Invalid data');\n return;\n }\n\n // When the consumer asks for the data, exit the function\n // by returning the CSV data built at this point\n if (shouldReturnCsv) {\n return this._csv;\n }\n\n // Create CSV blob to download if requesting in the browser and the\n // consumer doesn't set the shouldReturnCsv param\n const FileType = this._options.useTextFile ? 'plain' : 'csv';\n const fileExtension = this._options.useTextFile ? '.txt' : '.csv';\n const blob = new Blob([this._csv], {\n type: 'text/' + FileType + ';charset=utf8;'\n });\n\n //const attachmentType = this._options.useTextFile ? 'text' : 'csv';\n // const uri = 'data:attachment/' + attachmentType + ';charset=utf-8,' + encodeURI(this._csv);\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n\n link.setAttribute('visibility', 'hidden');\n link.download = this._options.filename.replace(/ /g, '_') + fileExtension;\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n /**\n * Create Headers\n */\n private _getHeaders(): void {\n if (!this._options.showLabels && !this._options.useKeysAsHeaders) {\n return;\n }\n const useKeysAsHeaders = this._options.useKeysAsHeaders;\n const headers: string[] = useKeysAsHeaders\n ? Object.keys(this._data[0])\n : this._options.headers;\n\n if (headers.length > 0) {\n let row = '';\n for (let keyPos = 0; keyPos < headers.length; keyPos++) {\n row += headers[keyPos] + this._options.fieldSeparator;\n }\n\n row = row.slice(0, -1);\n this._csv += row + CsvConfigConsts.EOL;\n }\n }\n /**\n * Create Body\n */\n private _getBody() {\n const keys = Object.keys(this._data[0]);\n for (var i = 0; i < this._data.length; i++) {\n let row = '';\n for (let keyPos = 0; keyPos < keys.length; keyPos++) {\n const key = keys[keyPos];\n row +=\n this._formatData(this._data[i][key]) + this._options.fieldSeparator;\n }\n\n row = row.slice(0, -1);\n this._csv += row + CsvConfigConsts.EOL;\n }\n }\n /**\n * Format Data\n * @param {any} data\n */\n private _formatData(data: any) {\n if (this._options.decimalSeparator === 'locale' && this._isFloat(data)) {\n return data.toLocaleString();\n }\n\n if (this._options.decimalSeparator !== '.' && this._isFloat(data)) {\n return data.toString().replace('.', this._options.decimalSeparator);\n }\n\n if (typeof data === 'string') {\n data = data.replace(/\"/g, '\"\"');\n if (\n this._options.quoteStrings ||\n data.indexOf(',') > -1 ||\n data.indexOf('\\n') > -1 ||\n data.indexOf('\\r') > -1\n ) {\n data = this._options.quoteStrings + data + this._options.quoteStrings;\n }\n return data;\n }\n\n if (typeof data === 'boolean') {\n return data ? 'TRUE' : 'FALSE';\n }\n return data;\n }\n /**\n * Check if is Float\n * @param {any} input\n */\n private _isFloat(input: any) {\n return +input === input && (!isFinite(input) || Boolean(input % 1));\n }\n /**\n * Parse the collection given to it\n *\n * @private\n * @param {*} jsonData\n * @returns {any[]}\n * @memberof ExportToCsv\n */\n private _parseData(jsonData: any): any[] {\n this._data = typeof jsonData != 'object' ? JSON.parse(jsonData) : jsonData;\n\n return this._data;\n }\n /**\n * Convet to Object\n * @param {any} val\n */\n toObject(val: any) {\n if (val === null || val === undefined) {\n throw new TypeError(\n 'Object.assign cannot be called with null or undefined'\n );\n }\n return Object(val);\n }\n /**\n * Assign data to new Object\n * @param {any} target\n * @param {any[]} ...source\n */\n objectAssign(target: any, ...source: any[]) {\n let from: any;\n const to = this.toObject(target);\n let symbols: any;\n let hasOwnProperty = Object.prototype.hasOwnProperty;\n let propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if ((<any>Object).getOwnPropertySymbols) {\n symbols = (<any>Object).getOwnPropertySymbols(from);\n for (let i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n }\n read(csvContent: string): CsvParsed {\n const lines = csvContent.split('\\n');\n let header: string[];\n let content: string[][];\n if (lines.length > 0) {\n const csv = lines.map((line) => {\n return this.parseLine(line.trim());\n }) as any;\n header = csv[0];\n\n // Si encuentra una linea en blanco ya no sigue leyendo las siguientes líneas\n let breakIndex!: number;\n csv.some((row: string[], index: number) => {\n const isBlankLine = row.every((column: string) => column.trim() === '');\n if (isBlankLine) {\n breakIndex = index;\n return true;\n }\n return false;\n });\n content = csv.slice(1, breakIndex);\n } else {\n header = [];\n content = [];\n }\n return {\n header,\n content\n };\n }\n parseLine(csvLine: string) {\n const values = [];\n const regex = /(?:\"([^\"]*)\"|'([^']*)'|([^,]+))(?:,|\\r?$)/g;\n let match;\n while ((match = regex.exec(csvLine)) !== null) {\n values.push(match[1] || match[2] || match[3]); // Extraer el valor correcto\n }\n return values;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateService {\n getDate(date: string): Date {\n const dateParts: string[] = date.split('T')[0].split('-');\n return new Date(Number(dateParts[0]), Number(dateParts[1]) - 1, Number(dateParts[2]));\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilesService {\n private callback!: Function;\n private fileInput: HTMLInputElement;\n private pickerClosed: boolean = false;\n\n constructor() {\n this.fileInput = document.createElement('input');\n this.fileInput.type = 'file';\n this.fileInput.addEventListener('change', (event: any) => {\n this.pickerClosed = true;\n this.loadValue(event.currentTarget.files);\n });\n }\n private loadValue(files: FileList | null) {\n if (files && files.length > 0) {\n let data: any[] = [];\n for (let i = 0; i < files.length; i++) {\n const file: any = files.item(i);\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n data.push(\n Object.assign(file, {\n data: reader.result,\n })\n );\n if (data.length == files.length) {\n this.callback(data.length > 0 ? data : null);\n this.fileInput.value = '';\n } else {\n this.callback(null);\n }\n };\n }\n }\n }\n public open(\n callback?: Function,\n options?: { accept?: string; multiple?: boolean }\n ) {\n this.pickerClosed = false;\n // Detectar cuando el usuario vuelve a la ventana después de abrir el picker\n const onFocus = () => {\n setTimeout(() => {\n if (!this.pickerClosed) {\n console.log(\n 'El usuario cerró el file picker sin seleccionar archivos.'\n );\n this.loadValue(null);\n }\n window.removeEventListener('focus', onFocus);\n }, 500); // Esperamos un poco para asegurarnos de que onchange haya tenido oportunidad de ejecutarse\n };\n window.addEventListener('focus', onFocus);\n\n this.fileInput.accept = options?.accept ? options.accept : '';\n this.fileInput.multiple = options?.multiple || false;\n this.fileInput.click();\n if (callback) {\n this.callback = callback;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilePickerService {\n private pickerClosed: boolean = false;\n\n public async open(options?: {\n accept?: string;\n multiple?: boolean;\n }): Promise<any[] | null> {\n return new Promise((resolve, reject) => {\n const fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.addEventListener('change', (event: any) => {\n this.pickerClosed = true;\n const files = event.currentTarget.files;\n if (files && files.length > 0) {\n let data: any[] = [];\n for (let i = 0; i < files.length; i++) {\n const file: any = files.item(i);\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n data.push(\n Object.assign(file, {\n data: reader.result\n })\n );\n if (data.length == files.length) {\n fileInput.value = '';\n resolve(data.length > 0 ? data : null);\n } else {\n resolve(null);\n }\n };\n }\n }\n });\n this.pickerClosed = false;\n // Detectar cuando el usuario vuelve a la ventana después de abrir el picker\n const onFocus = () => {\n setTimeout(() => {\n if (!this.pickerClosed) {\n reject(null);\n }\n window.removeEventListener('focus', onFocus);\n }, 500); // Esperamos un poco para asegurarnos de que onchange haya tenido oportunidad de ejecutarse\n };\n window.addEventListener('focus', onFocus);\n fileInput.accept = options?.accept ? options.accept : '';\n fileInput.multiple = options?.multiple || false;\n fileInput.click();\n });\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\n\ndeclare var window: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoogleTagManagerService {\n trackingId!: string;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: Object,\n public router: Router\n ) {}\n\n public appendTrackingCode(\n trackingId: string,\n options?: { environment?: { auth: string; preview: string } }\n ): void {\n try {\n if (isPlatformBrowser(this.platformId) && trackingId) {\n this.trackingId = trackingId;\n const s1: HTMLElement = document.createElement('script');\n s1.innerHTML = `\n (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'',p='${\n options?.environment?.preview\n ? '>m_auth=' + options?.environment.auth + '>m_preview=' + options?.environment.preview\n : ''\n }';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl+p;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','${trackingId}');\n `;\n document.head.appendChild(s1);\n const s2: HTMLElement = document.createElement('noscript');\n const s3: HTMLIFrameElement = document.createElement('iframe');\n s3.width = '0';\n s3.height = '0';\n s3.style.display = 'none';\n s3.style.visibility = 'hidden';\n s3.src = `//www.googletagmanager.com/ns.html?id=${trackingId}`;\n s2.appendChild(s3);\n (document.body as HTMLElement).prepend(s2);\n this.initSubscribers();\n }\n } catch (ex) {\n console.error('Error appending google tag manager');\n console.error(ex);\n }\n }\n public addVariable(variable: any) {\n if (isPlatformBrowser(this.platformId) && this.trackingId) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(variable);\n }\n }\n private initSubscribers() {\n this.router.events.subscribe(event => {\n try {\n if (event instanceof NavigationEnd && this.trackingId) {\n this.addVariable({\n event: 'router.NavigationEnd',\n pageTitle: document.title,\n pagePath: event.urlAfterRedirects\n });\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StringService {\n decodeHTML(text: string): string {\n const span = document.createElement('span');\n return text.replace(/&[#A-Za-z0-9]+;/gi, (entity) => {\n span.innerHTML = entity;\n return span.innerText;\n });\n }\n /**\n * Normaliza un texto para evitar el Case y los acentos\n * @param text texto a normalizar\n * @returns texto normalizado\n */\n normalize(text: string): string {\n if (!text) return '';\n return text\n .toLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\");\n }\n normalizeName(text: string): string {\n text = text.trim();\n text = text.charAt(0).toUpperCase() + text.slice(1);\n return text;\n }\n /**\n * Te da el tiempo en milisegundos que toma leer un texto dado\n * @param text texto a leer\n * @return number Tiempo en milisegundos\n */\n calculateReadingTime(text: string): number {\n // Caracteres por minuto\n const cpm = 1200;\n\n // Calcular el número de caracteres en el texto\n const numCharacters: number = text.length;\n\n // Calcular el tiempo de lectura en minutos\n const readingTimeMinutes: number = numCharacters / cpm;\n\n // Convertir el tiempo de lectura de minutos a milisegundos\n const readingTimeMilliseconds: number = readingTimeMinutes * 60 * 1000;\n\n return readingTimeMilliseconds;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Apollo, gql, MutationResult } from 'apollo-angular';\nimport { lastValueFrom, Observable } from 'rxjs';\n\nimport { StringService } from './string.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GraphqlService {\n private apollo = inject(Apollo);\n private stringService = inject(StringService);\n\n\n mutation(operation: 'create' | 'update' | 'delete', type: string, entity: any): Promise<unknown> {\n let mutation: Observable<MutationResult<unknown>>;\n const capitalizedType = this.stringService.normalizeName(type);\n switch (operation) {\n case 'create':\n entity.uuid = entity.id ? entity.id.split('/').pop() : crypto.randomUUID();\n delete entity.createdBy;\n delete entity.updatedBy;\n delete entity.id;\n mutation = this.apollo.mutate({\n mutation: gql`\n mutation Create${capitalizedType}($entity: create${capitalizedType}Input!) {\n create${capitalizedType}(input: $entity) {\n ${type} {\n id\n }\n }\n }\n `,\n variables: {\n entity\n }\n });\n break;\n case 'delete':\n mutation = this.apollo.mutate({\n mutation: gql`\n mutation Delete${capitalizedType}($id: ID!) {\n delete${capitalizedType}(input: {id: $id}) {\n clientMutationId\n }\n }\n `,\n variables: {\n id: entity.id\n }\n });\n break;\n case 'update':\n delete entity.createdBy;\n delete entity.updatedBy;\n mutation = this.apollo.mutate({\n mutation: gql`\n mutation Update${capitalizedType}($entity: update${capitalizedType}Input!) {\n update${capitalizedType}(input: $entity) {\n ${type} {\n id\n }\n }\n }\n `,\n variables: {\n entity\n }\n });\n break;\n }\n return lastValueFrom(mutation);\n }\n parseQuery(query: { [key: string]: any }) {\n if (query !== null) {\n const data: any = {};\n for (const property in query) {\n if (query[property]?.edges) {\n data[property] = this.parseEdges(query[property].edges);\n } else if (query[property]?.node) {\n data[property] = this.parseQuery(query[property].node);\n } else if (Array.isArray(query[property])) {\n // Si es un arreglo simple no lo parsea\n if (typeof query[property][0] === 'object') {\n data[property] = query[property].map((node: any) => {\n return this.parseQuery(node);\n });\n } else {\n data[property] = query[property];\n }\n } else if (typeof query[property] === 'object') {\n data[property] = this.parseQuery(query[property]);\n } else if (property !== '__typename') {\n data[property] = query[property];\n }\n }\n return data;\n } else {\n return query;\n }\n }\n parseEdges(edges: any): any[] {\n return edges.map((entity: any) => {\n return this.parseQuery(entity?.node || entity);\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ObjectService {\n filterNullProperties(obj: any): any {\n const mappedObj: any = {};\n Object.keys(obj).forEach((key) => {\n if (obj[key] !== null && obj[key] !== undefined && obj[key] !== 'undefined') {\n mappedObj[key] = obj[key];\n }\n });\n return mappedObj;\n }\n deepMerge(target: any, source: any) {\n source = structuredClone(source);\n target = structuredClone(target);\n for (const key of Object.keys(source)) {\n if (source[key] instanceof Object && key in target) {\n Object.assign(source[key], this.deepMerge(target[key], source[key]));\n }\n }\n return { ...target, ...source };\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StorageService {\n //TODO: Replace with Map object it is more efficient\n memoryStorage: any;\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n private getValue(key: string, storage?: 'local' | 'session' | 'memory'): any {\n let value: any;\n if (!storage || typeof storage == 'string') {\n switch (storage) {\n case 'local':\n value = localStorage[key];\n break;\n case 'memory':\n value = this.memoryStorage[key];\n break;\n default:\n value = sessionStorage[key];\n break;\n }\n } else if (typeof storage == 'object') {\n value = storage[key];\n }\n return value;\n }\n public delete(key: string, storage?: 'local' | 'session' | 'memory') {\n if (isPlatformBrowser(this.platformId)) {\n if (!storage || typeof storage == 'string') {\n switch (storage) {\n case 'local':\n delete localStorage[key];\n break;\n case 'memory':\n delete this.memoryStorage[key];\n break;\n default:\n delete sessionStorage[key];\n break;\n }\n } else if (typeof storage == 'object') {\n delete storage[key];\n }\n }\n }\n public get(key: string, storage?: 'local' | 'session' | 'memory'): any {\n let parsedValue: any;\n if (isPlatformBrowser(this.platformId)) {\n try {\n parsedValue = JSON.parse(this.getValue(key, storage));\n } catch (err) {\n parsedValue = this.getValue(key, storage);\n }\n }\n return parsedValue;\n }\n public set(\n key: string,\n value: any,\n storage?: 'local' | 'session' | 'memory'\n ) {\n if (isPlatformBrowser(this.platformId)) {\n const valueString = JSON.stringify(value);\n if (!storage || typeof storage == 'string') {\n switch (storage) {\n case 'local':\n localStorage[key] = valueString;\n break;\n case 'memory':\n this.memoryStorage[key] = valueString;\n break;\n default:\n sessionStorage[key] = valueString;\n break;\n }\n }\n }\n }\n}\n","function lengthValidator(number: string, digits: number): boolean {\n let value = true;\n if (number.trim() === '') { // No puede estar vacio\n value = false;\n } else if (number.trim().length !== digits) { // Cantidad de dígitos\n value = false;\n }\n return value;\n}\nfunction provinceValidator(number: string): boolean {\n let value = true;\n const code = Number(number);\n if ((code < 0 || code > 24) && code !== 30) {\n value = false;\n }\n return value;\n}\nfunction typeValidator(number: string, type: string): boolean {\n let value = true;\n const code = Number(number);\n switch (type) {\n case 'cedula':\n if (code < 0 || code > 6) {\n value = false;\n }\n break;\n case 'ruc_natural':\n if (code < 0 || code > 5) {\n value = false;\n }\n break;\n case 'ruc_privada':\n if (code !== 9) {\n value = false;\n }\n break;\n case 'ruc_publica':\n if (code !== 6) {\n value = false;\n }\n break;\n default:\n value = false;\n break;\n }\n return value;\n}\nfunction module10Validator(number: string, verifierCodeString: string): boolean {\n const coefficients: number[] = [2, 1, 2, 1, 2, 1, 2, 1, 2];\n const verifierCode = Number(verifierCodeString);\n const numberParts: string[] = number.split('');\n let value = true;\n let total = 0;\n let result: number;\n numberParts.forEach((part: string, index: number) => {\n let valuePosition: number = Number(part) * coefficients[index];\n if (valuePosition >= 10) {\n let newValuePosition: string[] = String(valuePosition).split('');\n let sum: string = newValuePosition.reduce((previousValue: string, currentValue: string) => {\n return String(Number(currentValue) + Number(previousValue));\n });\n valuePosition = Number(sum);\n }\n total += valuePosition;\n });\n const residue: number = total % 10;\n if (residue === 0) {\n result = 0;\n } else {\n result = 10 - residue;\n }\n if (result !== verifierCode) {\n value = false;\n }\n return value;\n}\nfunction module11Validator(number: string, verifierCodeString: string, type: string): boolean {\n const verifierCode = Number(verifierCodeString);\n const numberParts: string[] = number.split('');\n let value = true;\n let coefficients: number[];\n let total = 0;\n let result: number;\n switch (type) {\n case 'ruc_privada':\n coefficients = [4, 3, 2, 7, 6, 5, 4, 3, 2];\n break;\n case 'ruc_publica':\n coefficients = [3, 2, 7, 6, 5, 4, 3, 2];\n break;\n default:\n return false;\n break;\n }\n numberParts.forEach((part: string, index: number) => {\n let valuePosition: number = Number(part) * coefficients[index];\n total += valuePosition;\n });\n const residue: number = total % 11;\n if (residue === 0) {\n result = 0;\n } else {\n result = 11 - residue;\n }\n if (result !== verifierCode) {\n value = false;\n }\n return value;\n}\nfunction storeCodeValidator(number: string): boolean {\n let value = true;\n const code = Number(number);\n if (code < 1) {\n value = false;\n }\n return value;\n}\nexport function getIdentificationType(number: string): string | null {\n let type: string | null = null;\n if (lengthValidator(number, 10) &&\n provinceValidator(number.substr(0, 2)) &&\n //typeValidator(number.substr(2, 1), 'cedula') &&\n module10Validator(number.substr(0, 9), number.substr(9, 1))) {\n type = 'cedula';\n } else if (lengthValidator(number, 13) &&\n provinceValidator(number.substr(0, 2)) &&\n //typeValidator(number.substr(2, 1), 'ruc_natural') &&\n storeCodeValidator(number.substr(10, 3)) &&\n module10Validator(number.substr(0, 9), number.substr(9, 1))\n ) {\n type = 'ruc_natural';\n } else if (lengthValidator(number, 13) &&\n provinceValidator(number.substr(0, 2)) &&\n typeValidator(number.substr(2, 1), 'ruc_privada') &&\n storeCodeValidator(number.substr(10, 3)) //&&\n //module11Validator(number.substr(0, 9), number.substr(9, 1), 'ruc_privada')\n ) {\n type = 'ruc_privada';\n } else if (lengthValidator(number, 13) &&\n provinceValidator(number.substr(0, 2)) &&\n typeValidator(number.substr(2, 1), 'ruc_publica') &&\n storeCodeValidator(number.substr(9, 4)) //&&\n //module11Validator(number.substr(0, 8), number.substr(8, 1), 'ruc_publica')\n ) {\n type = 'ruc_publica';\n }\n return type;\n}","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { getIdentificationType } from './identification-type';\n\nexport function identificationValidator(type: 'cedula' | 'ruc_natural' | 'ruc_privada' | 'ruc_publica' | 'ruc' | 'id'): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const number: string = String(control.value);\n if (number && number.trim() !== '') {\n const parsedType = getIdentificationType(number);\n switch (type) {\n case 'cedula':\n case 'ruc_natural':\n case 'ruc_privada':\n case 'ruc_publica':\n return !parsedType || parsedType !== type ? { invalidIdentification: true } : null;\n break;\n case 'ruc':\n return !parsedType || ['ruc_natural', 'ruc_privada', 'ruc_publica'].indexOf(parsedType) === -1 ? { invalidIdentification: true } : null;\n break;\n case 'id':\n return !parsedType ? { invalidIdentification: true } : null;\n break;\n default:\n return null;\n break;\n }\n } else {\n return null;\n }\n };\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factor_ec-utils.mjs","sources":["../../../projects/utils/src/lib/array-util.ts","../../../projects/utils/src/lib/color-util.ts","../../../projects/utils/src/lib/constants/csv-config.ts","../../../projects/utils/src/lib/csv-exporter.ts","../../../projects/utils/src/lib/date-util.ts","../../../projects/utils/src/lib/file-picker.ts","../../../projects/utils/src/lib/object-util.ts","../../../projects/utils/src/lib/storage.ts","../../../projects/utils/src/lib/string-util.ts","../../../projects/utils/src/lib/monitoring/google-tag-manager.ts","../../../projects/utils/src/lib/constants/operation-type.ts","../../../projects/utils/src/lib/validators/ec/identification-type.ts","../../../projects/utils/src/lib/validators/ec/identification-validator.ts","../../../projects/utils/src/lib/auth/auth-provider.ts","../../../projects/utils/src/lib/auth/auth-config.token.ts","../../../projects/utils/src/lib/auth/auth-service.ts","../../../projects/utils/src/lib/auth/auth-guards.ts","../../../projects/utils/src/lib/auth/auth-interceptor.ts","../../../projects/utils/src/lib/utils.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/factor_ec-utils.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n/**\n * Utility service for array operations.\n *\n * @remarks\n * Provides helper methods for common array manipulation tasks.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ArrayUtil {\n /**\n * Merges multiple arrays into a single array, combining objects with the same property value.\n *\n * @param arrays - Array of arrays to merge\n * @param prop - Property name to use as the key for merging objects\n * @returns Merged array with combined objects\n *\n * @example\n * ```typescript\n * const arr1 = [{ id: 1, name: 'John' }];\n * const arr2 = [{ id: 1, age: 30 }];\n * const result = arrayUtil.merge([arr1, arr2], 'id');\n * // Returns: [{ id: 1, name: 'John', age: 30 }]\n * ```\n */\n public merge(arrays: any[], prop: string): any[] {\n const merged: any = {};\n arrays.forEach(arr => {\n arr.forEach((item: any) => {\n merged[item[prop]] = Object.assign({}, merged[item[prop]], item);\n });\n });\n return Object.values(merged);\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Utility service for color operations and hash-based color generation.\n *\n * @remarks\n * Provides methods to generate consistent colors from strings using hash algorithms,\n * and convert between different color formats (HSL, RGB, HEX).\n *\n * @example\n * ```typescript\n * const colorUtil = inject(ColorUtil);\n * const hexColor = colorUtil.hex('username');\n * // Returns: '#a1b2c3' (consistent color for the same string)\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ColorUtil {\n private readonly L: number[];\n private readonly S: number[];\n private readonly hueRanges: { min: number; max: number }[];\n\n constructor() {\n const options: any = {};\n let LS = [options.lightness, options.saturation].map(function (param) {\n param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n return Array.isArray(param) ? param.concat() : [param];\n });\n\n this.L = LS[0];\n this.S = LS[1];\n\n if (typeof options.hue === 'number') {\n options.hue = { min: options.hue, max: options.hue };\n }\n if (typeof options.hue === 'object' && !Array.isArray(options.hue)) {\n options.hue = [options.hue];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range: {\n min: number;\n max: number;\n }) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max,\n };\n });\n }\n\n /**\n * Generates a hash value from a string using BKDR hash algorithm (modified version).\n *\n * @param str - The string to hash\n * @returns A numeric hash value\n *\n * @remarks\n * This is a modified BKDR hash algorithm optimized for short strings.\n */\n public hash(str: string): number {\n let seed = 131;\n let seed2 = 137;\n let hash = 0;\n // make hash more sensitive for short string like 'a', 'b', 'c'\n str += 'x';\n // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n const maxSafeInteger: number = Math.round(9007199254740991 / seed2);\n for (let i = 0; i < str.length; i++) {\n if (hash > maxSafeInteger) {\n hash = Math.round(hash / seed2);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n }\n\n /**\n * Converts an RGB array to a hexadecimal color string.\n *\n * @param RGBArray - Array with [R, G, B] values (0-255)\n * @returns Hexadecimal color string starting with # (e.g., '#a1b2c3')\n */\n public rgb2hex(RGBArray: number[]): string {\n let hex = '#';\n RGBArray.forEach(function (value) {\n if (value < 16) {\n hex += 0;\n }\n hex += value.toString(16);\n });\n return hex;\n }\n\n /**\n * Converts HSL color values to RGB array.\n *\n * @param H - Hue value in range [0, 360)\n * @param S - Saturation value in range [0, 1]\n * @param L - Lightness value in range [0, 1]\n * @returns Array with [R, G, B] values in range [0, 255]\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n */\n public hsl2rgb(H: number, S: number, L: number): number[] {\n H /= 360;\n\n let q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n let p = 2 * L - q;\n\n return [H + 1 / 3, H, H - 1 / 3].map(function (color) {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n } else if (color < 0.5) {\n color = q;\n } else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n } else {\n color = p;\n }\n return Math.round(color * 255);\n });\n }\n\n /**\n * Generates HSL color values from a string hash.\n *\n * @param str - The string to generate color from\n * @returns Array with [H, S, L] values where H ∈ [0, 360), S ∈ [0, 1], L ∈ [0, 1]\n */\n public hsl(str: string): number[] {\n let H;\n let S;\n let L;\n let hash = this.hash(str);\n\n if (this.hueRanges.length) {\n let range = this.hueRanges[hash % this.hueRanges.length];\n let hueResolution = 727; // note that 727 is a prime\n H =\n (((hash / this.hueRanges.length) % hueResolution) *\n (range.max - range.min)) /\n hueResolution +\n range.min;\n } else {\n H = hash % 359; // note that 359 is a prime\n }\n hash = Math.round(hash / 360);\n S = this.S[hash % this.S.length];\n hash = Math.round(hash / this.S.length);\n L = this.L[hash % this.L.length];\n\n return [H, S, L];\n }\n\n /**\n * Generates RGB color values from a string hash.\n *\n * @param str - The string to generate color from\n * @returns Array with [R, G, B] values in range [0, 255]\n */\n public rgb(str: string): number[] {\n let hsl = this.hsl(str);\n return this.hsl2rgb(hsl[0], hsl[1], hsl[2]);\n }\n\n /**\n * Generates a hexadecimal color string from a string hash.\n *\n * @param str - The string to generate color from\n * @returns Hexadecimal color string starting with # (e.g., '#a1b2c3')\n *\n * @example\n * ```typescript\n * const color = colorUtil.hex('username');\n * // Returns: '#a1b2c3' (same string always returns same color)\n * ```\n */\n public hex(str: string): string {\n let rgb = this.rgb(str);\n return this.rgb2hex(rgb);\n }\n}\n","/**\n * Default configuration constants for CSV export operations.\n */\nexport const CSV_CONFIG = {\n /** End of line character for CSV */\n EOL: '\\r\\n',\n /** Byte Order Mark for UTF-8 encoding */\n BOM: '\\ufeff',\n /** Default field separator character */\n DEFAULT_FIELD_SEPARATOR: ',',\n /** Default decimal separator */\n DEFAULT_DECIMAL_SEPARATOR: '.',\n /** Default quote character for strings */\n DEFAULT_QUOTE: '\"',\n /** Default value for showing title */\n DEFAULT_SHOW_TITLE: false,\n /** Default title text */\n DEFAULT_TITLE: 'My Generated Report',\n /** Default filename (without extension) */\n DEFAULT_FILENAME: 'generated',\n /** Default value for showing column labels */\n DEFAULT_SHOW_LABELS: false,\n /** Default value for using text file format */\n DEFAULT_USE_TEXT_FILE: false,\n /** Default value for including BOM */\n DEFAULT_USE_BOM: true,\n /** Default header array (empty) */\n DEFAULT_HEADER: [],\n /** Default value for using object keys as headers */\n DEFAULT_KEYS_AS_HEADERS: false\n} as const;\n\n/**\n * Type representing valid CSV configuration values.\n */\nexport type CsvConfig = (typeof CSV_CONFIG)[keyof typeof CSV_CONFIG];\n","import { Injectable } from '@angular/core';\nimport { CsvOptions, CsvParsed } from './models/csv';\nimport { CSV_CONFIG } from './constants/csv-config';\n\n/**\n * Service for exporting data to CSV format and parsing CSV content.\n *\n * @remarks\n * Provides functionality to generate CSV files from JSON data with customizable options,\n * and to parse CSV content back into structured data.\n *\n * @example\n * ```typescript\n * const csvExporter = inject(CsvExporter);\n * csvExporter.options = { filename: 'export', showLabels: true };\n * csvExporter.generate([{ name: 'John', age: 30 }]);\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CsvExporter {\n private _data: any[] = [];\n private _options!: CsvOptions;\n private _csv = '';\n private readonly configDefaults: CsvOptions = {\n filename: CSV_CONFIG.DEFAULT_FILENAME,\n fieldSeparator: CSV_CONFIG.DEFAULT_FIELD_SEPARATOR,\n quoteStrings: CSV_CONFIG.DEFAULT_QUOTE,\n decimalSeparator: CSV_CONFIG.DEFAULT_DECIMAL_SEPARATOR,\n showLabels: CSV_CONFIG.DEFAULT_SHOW_LABELS,\n showTitle: CSV_CONFIG.DEFAULT_SHOW_TITLE,\n title: CSV_CONFIG.DEFAULT_TITLE,\n useTextFile: CSV_CONFIG.DEFAULT_USE_TEXT_FILE,\n useBom: CSV_CONFIG.DEFAULT_USE_BOM,\n headers: [...CSV_CONFIG.DEFAULT_HEADER],\n useKeysAsHeaders: CSV_CONFIG.DEFAULT_KEYS_AS_HEADERS\n };\n\n get options(): CsvOptions {\n return this._options;\n }\n\n set options(options: Partial<CsvOptions>) {\n this._options = this.objectAssign({}, this.configDefaults, options);\n }\n\n constructor() {\n this._options = this.objectAssign({}, this.configDefaults) as CsvOptions;\n }\n /**\n * Generates a CSV file from JSON data and optionally downloads it.\n *\n * @param jsonData - The data to export (array of objects or JSON string)\n * @param shouldReturnCsv - If true, returns the CSV string instead of downloading\n * @returns The CSV string if shouldReturnCsv is true, otherwise void\n *\n * @example\n * ```typescript\n * // Download CSV\n * csvExporter.generate([{ name: 'John', age: 30 }]);\n *\n * // Get CSV string\n * const csvString = csvExporter.generate([{ name: 'John' }], true);\n * ```\n */\n public generate(jsonData: any, shouldReturnCsv = false): void | any {\n // Make sure to reset csv data on each run\n this._csv = '';\n\n this._parseData(jsonData);\n\n if (this._options.useBom) {\n this._csv += CSV_CONFIG.BOM;\n }\n\n if (this._options.showTitle) {\n this._csv += this._options.title + '\\r\\n\\n';\n }\n\n this._getHeaders();\n this._getBody();\n\n if (this._csv == '') {\n console.log('Invalid data');\n return;\n }\n\n // When the consumer asks for the data, exit the function\n // by returning the CSV data built at this point\n if (shouldReturnCsv) {\n return this._csv;\n }\n\n // Create CSV blob to download if requesting in the browser and the\n // consumer doesn't set the shouldReturnCsv param\n const FileType = this._options.useTextFile ? 'plain' : 'csv';\n const fileExtension = this._options.useTextFile ? '.txt' : '.csv';\n const blob = new Blob([this._csv], {\n type: 'text/' + FileType + ';charset=utf8;'\n });\n\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n\n link.setAttribute('visibility', 'hidden');\n link.download = this._options.filename.replace(/ /g, '_') + fileExtension;\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n /**\n * Creates CSV headers row based on configuration.\n *\n * @private\n */\n private _getHeaders(): void {\n if (!this._options.showLabels && !this._options.useKeysAsHeaders) {\n return;\n }\n const useKeysAsHeaders = this._options.useKeysAsHeaders;\n const headers: string[] = useKeysAsHeaders\n ? Object.keys(this._data[0])\n : this._options.headers;\n\n if (headers.length > 0) {\n let row = '';\n for (let keyPos = 0; keyPos < headers.length; keyPos++) {\n row += headers[keyPos] + this._options.fieldSeparator;\n }\n\n row = row.slice(0, -1);\n this._csv += row + CSV_CONFIG.EOL;\n }\n }\n /**\n * Creates CSV body rows from the data.\n *\n * @private\n */\n private _getBody(): void {\n const keys = Object.keys(this._data[0]);\n for (var i = 0; i < this._data.length; i++) {\n let row = '';\n for (let keyPos = 0; keyPos < keys.length; keyPos++) {\n const key = keys[keyPos];\n row +=\n this._formatData(this._data[i][key]) + this._options.fieldSeparator;\n }\n\n row = row.slice(0, -1);\n this._csv += row + CSV_CONFIG.EOL;\n }\n }\n /**\n * Formats data for CSV output according to configuration.\n *\n * @param data - The data value to format\n * @returns The formatted data as a string\n * @private\n */\n private _formatData(data: any): any {\n if (this._options.decimalSeparator === 'locale' && this._isFloat(data)) {\n return data.toLocaleString();\n }\n\n if (this._options.decimalSeparator !== '.' && this._isFloat(data)) {\n return data.toString().replace('.', this._options.decimalSeparator);\n }\n\n if (typeof data === 'string') {\n data = data.replace(/\"/g, '\"\"');\n if (\n this._options.quoteStrings ||\n data.indexOf(',') > -1 ||\n data.indexOf('\\n') > -1 ||\n data.indexOf('\\r') > -1\n ) {\n data = this._options.quoteStrings + data + this._options.quoteStrings;\n }\n return data;\n }\n\n if (typeof data === 'boolean') {\n return data ? 'TRUE' : 'FALSE';\n }\n return data;\n }\n /**\n * Checks if a value is a floating point number.\n *\n * @param input - The value to check\n * @returns True if the value is a float, false otherwise\n * @private\n */\n private _isFloat(input: any): boolean {\n return +input === input && (!isFinite(input) || Boolean(input % 1));\n }\n /**\n * Parses JSON data into an array format.\n *\n * @param jsonData - The JSON data to parse (object, array, or JSON string)\n * @returns Parsed array of data\n * @private\n */\n private _parseData(jsonData: any): any[] {\n this._data = typeof jsonData != 'object' ? JSON.parse(jsonData) : jsonData;\n\n return this._data;\n }\n /**\n * Converts a value to an object, throwing an error for null or undefined.\n *\n * @param val - The value to convert\n * @returns The value as an object\n * @throws {TypeError} If val is null or undefined\n */\n public toObject(val: any): any {\n if (val === null || val === undefined) {\n throw new TypeError(\n 'Object.assign cannot be called with null or undefined'\n );\n }\n return Object(val);\n }\n /**\n * Assigns properties from source objects to a target object (similar to Object.assign).\n *\n * @param target - The target object to assign properties to\n * @param source - One or more source objects to copy properties from\n * @returns The target object with assigned properties\n */\n public objectAssign(target: any, ...source: any[]): any {\n let from: any;\n const to = this.toObject(target);\n let symbols: any;\n let hasOwnProperty = Object.prototype.hasOwnProperty;\n let propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if ((<any>Object).getOwnPropertySymbols) {\n symbols = (<any>Object).getOwnPropertySymbols(from);\n for (let i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n }\n /**\n * Parses CSV content into a structured format with headers and content rows.\n *\n * @param csvContent - The CSV string to parse\n * @returns An object containing the header array and content rows array\n *\n * @example\n * ```typescript\n * const parsed = csvExporter.read('name,age\\nJohn,30\\nJane,25');\n * // Returns: { header: ['name', 'age'], content: [['John', '30'], ['Jane', '25']] }\n * ```\n */\n public read(csvContent: string): CsvParsed {\n const lines = csvContent.split('\\n');\n let header: string[];\n let content: string[][];\n if (lines.length > 0) {\n const csv = lines.map((line) => {\n return this.parseLine(line.trim());\n }) as any;\n header = csv[0];\n\n // If a blank line is found, stop reading subsequent lines\n let breakIndex!: number;\n csv.some((row: string[], index: number) => {\n const isBlankLine = row.every((column: string) => column.trim() === '');\n if (isBlankLine) {\n breakIndex = index;\n return true;\n }\n return false;\n });\n content = csv.slice(1, breakIndex);\n } else {\n header = [];\n content = [];\n }\n return {\n header,\n content\n };\n }\n /**\n * Parses a single CSV line into an array of values.\n *\n * @param csvLine - A single line of CSV content\n * @returns Array of parsed values from the line\n *\n * @remarks\n * Handles quoted values and different quote styles (single and double quotes).\n */\n public parseLine(csvLine: string): string[] {\n const values = [];\n const regex = /(?:\"([^\"]*)\"|'([^']*)'|([^,]+))(?:,|\\r?$)/g;\n let match;\n while ((match = regex.exec(csvLine)) !== null) {\n values.push(match[1] || match[2] || match[3]); // Extract the correct value\n }\n return values;\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Utility service for date operations.\n *\n * @remarks\n * Provides helper methods for date parsing and manipulation.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DateUtil {\n /**\n * Parses a date string in ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss) and returns a Date object.\n *\n * @param date - The date string to parse (ISO format)\n * @returns A Date object representing the parsed date\n *\n * @example\n * ```typescript\n * const date = dateUtil.getDate('2025-01-15');\n * // Returns: Date object for January 15, 2025\n * ```\n */\n public getDate(date: string): Date {\n const dateParts: string[] = date.split('T')[0].split('-');\n return new Date(Number(dateParts[0]), Number(dateParts[1]) - 1, Number(dateParts[2]));\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for opening file picker dialogs and reading file contents.\n *\n * @remarks\n * Provides a programmatic way to open file selection dialogs and read file data as base64.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class FilePicker {\n /**\n * Opens a file picker dialog and returns the selected files with their data as base64.\n *\n * @param options - Optional configuration for the file picker\n * @param options.accept - File types to accept (e.g., 'image/*', '.pdf')\n * @param options.multiple - Whether to allow multiple file selection\n * @returns Promise that resolves to an array of files with data property, or null if cancelled\n *\n * @example\n * ```typescript\n * const files = await filePicker.open({ accept: 'image/*', multiple: true });\n * if (files) {\n * files.forEach(file => console.log(file.data)); // base64 data\n * }\n * ```\n */\n public async open(options?: {\n accept?: string;\n multiple?: boolean;\n }): Promise<any[] | null> {\n return new Promise((resolve, reject) => {\n const fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.style.display = 'none';\n if (options?.accept) {\n fileInput.accept = options.accept;\n }\n fileInput.multiple = options?.multiple ?? false;\n document.body.appendChild(fileInput);\n let changeHandled = false;\n const cleanUp = () => {\n window.removeEventListener('focus', onFocus);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n if (fileInput.parentNode) {\n document.body.removeChild(fileInput);\n }\n };\n const onFocus = () => {\n setTimeout(() => {\n if (!changeHandled) {\n cleanUp();\n resolve(null);\n }\n }, 1500);\n };\n const onVisibilityChange = () => {\n if (document.visibilityState === 'visible') {\n setTimeout(() => {\n if (!changeHandled) {\n cleanUp();\n resolve(null);\n }\n }, 1500);\n }\n };\n fileInput.addEventListener('change', async (event: any) => {\n changeHandled = true;\n const files = Array.from(event.target.files || []) as File[];\n if (!files.length) {\n cleanUp();\n resolve(null);\n return;\n }\n try {\n const result = await Promise.all(\n files.map(file => {\n return new Promise((res, rej) => {\n const reader = new FileReader();\n reader.onload = () => {\n res(Object.assign(file, { data: reader.result }));\n };\n reader.onerror = (err) => {\n rej(reader.error);\n };\n reader.readAsDataURL(file);\n });\n })\n );\n cleanUp();\n resolve(result);\n } catch (error) {\n cleanUp();\n reject(error);\n }\n });\n window.addEventListener('focus', onFocus);\n document.addEventListener('visibilitychange', onVisibilityChange);\n fileInput.click();\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Utility service for object operations.\n *\n * @remarks\n * Provides helper methods for object manipulation and transformation.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ObjectUtil {\n /**\n * Filters out null, undefined, and 'undefined' string properties from an object.\n *\n * @param obj - The object to filter\n * @returns A new object with null/undefined properties removed\n *\n * @example\n * ```typescript\n * const filtered = objectUtil.filterNullProperties({ a: 1, b: null, c: undefined });\n * // Returns: { a: 1 }\n * ```\n */\n public filterNullProperties(obj: any): any {\n const mappedObj: any = {};\n Object.keys(obj).forEach((key) => {\n if (obj[key] !== null && obj[key] !== undefined && obj[key] !== 'undefined') {\n mappedObj[key] = obj[key];\n }\n });\n return mappedObj;\n }\n /**\n * Performs a deep merge of two objects, combining nested properties.\n *\n * @param target - The target object to merge into\n * @param source - The source object to merge from\n * @returns A new object with deeply merged properties\n *\n * @remarks\n * Uses structuredClone to avoid mutating the original objects.\n *\n * @example\n * ```typescript\n * const merged = objectUtil.deepMerge({ a: { b: 1 } }, { a: { c: 2 } });\n * // Returns: { a: { b: 1, c: 2 } }\n * ```\n */\n public deepMerge(target: any, source: any): any {\n source = structuredClone(source);\n target = structuredClone(target);\n for (const key of Object.keys(source)) {\n if (source[key] instanceof Object && key in target) {\n Object.assign(source[key], this.deepMerge(target[key], source[key]));\n }\n }\n return { ...target, ...source };\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { StorageType } from './constants/storage-type';\n\n/**\n * Service for managing browser storage (localStorage, sessionStorage, and memory storage).\n *\n * @remarks\n * Provides a unified interface for storing and retrieving data from different storage types.\n * Automatically handles JSON serialization/deserialization and platform detection.\n *\n * @example\n * ```typescript\n * const storage = inject(Storage);\n * storage.set('key', { data: 'value' }, 'local');\n * const value = storage.get('key', 'local');\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class Storage {\n // TODO: Replace with Map object it is more efficient\n private memoryStorage: any = {};\n private readonly platformId = inject(PLATFORM_ID);\n\n private getValue(key: string, storage?: StorageType): any {\n let value: any;\n if (!storage || typeof storage == 'string') {\n switch (storage) {\n case 'local':\n value = localStorage[key];\n break;\n case 'memory':\n value = this.memoryStorage[key];\n break;\n default:\n value = sessionStorage[key];\n break;\n }\n } else if (typeof storage == 'object') {\n value = storage[key];\n }\n return value;\n }\n /**\n * Deletes a value from the specified storage.\n *\n * @param key - The key of the value to delete\n * @param storage - The storage type ('local', 'session', or 'memory'). Defaults to 'session'\n */\n public delete(key: string, storage?: StorageType): void {\n if (isPlatformBrowser(this.platformId)) {\n if (!storage || typeof storage == 'string') {\n switch (storage) {\n case 'local':\n delete localStorage[key];\n break;\n case 'memory':\n delete this.memoryStorage[key];\n break;\n default:\n delete sessionStorage[key];\n break;\n }\n } else if (typeof storage == 'object') {\n delete storage[key];\n }\n }\n }\n /**\n * Retrieves a value from the specified storage.\n *\n * @param key - The key of the value to retrieve\n * @param storage - The storage type ('local', 'session', or 'memory'). Defaults to 'session'\n * @returns The parsed value (if JSON) or the raw value, or undefined if not found\n *\n * @remarks\n * Automatically attempts to parse JSON values. If parsing fails, returns the raw string.\n */\n public get(key: string, storage?: StorageType): any {\n let parsedValue: any;\n if (isPlatformBrowser(this.platformId)) {\n try {\n parsedValue = JSON.parse(this.getValue(key, storage));\n } catch (err) {\n parsedValue = this.getValue(key, storage);\n }\n }\n return parsedValue;\n }\n /**\n * Stores a value in the specified storage.\n *\n * @param key - The key to store the value under\n * @param value - The value to store (will be JSON stringified)\n * @param storage - The storage type ('local', 'session', or 'memory'). Defaults to 'session'\n *\n * @remarks\n * Values are automatically JSON stringified before storage.\n */\n public set(\n key: string,\n value: any,\n storage?: StorageType\n ): void {\n if (isPlatformBrowser(this.platformId)) {\n const valueString = JSON.stringify(value);\n if (!storage || typeof storage == 'string') {\n switch (storage) {\n case 'local':\n localStorage[key] = valueString;\n break;\n case 'memory':\n this.memoryStorage[key] = valueString;\n break;\n default:\n sessionStorage[key] = valueString;\n break;\n }\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Utility service for string operations.\n *\n * @remarks\n * Provides helper methods for common string manipulation and formatting tasks.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class StringUtil {\n /**\n * Decodes HTML entities in a string.\n *\n * @param text - The string containing HTML entities to decode\n * @returns The decoded string\n *\n * @example\n * ```typescript\n * const encoded = '<div>Hello</div>';\n * const decoded = stringUtil.decodeHTML(encoded);\n * // Returns: '<div>Hello</div>'\n * ```\n */\n public decodeHTML(text: string): string {\n const span = document.createElement('span');\n return text.replace(/&[#A-Za-z0-9]+;/gi, (entity) => {\n span.innerHTML = entity;\n return span.innerText;\n });\n }\n /**\n * Normalizes a text by converting to lowercase and removing accents.\n *\n * @param text - The text to normalize\n * @returns The normalized text without accents and in lowercase\n *\n * @example\n * ```typescript\n * const normalized = stringUtil.normalize('Café');\n * // Returns: 'cafe'\n * ```\n */\n public normalize(text: string): string {\n if (!text) return '';\n return text\n .toLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\");\n }\n /**\n * Normalizes a name by trimming whitespace and capitalizing the first letter.\n *\n * @param text - The name text to normalize\n * @returns The normalized name with first letter capitalized\n *\n * @example\n * ```typescript\n * const normalized = stringUtil.normalizeName(' john doe ');\n * // Returns: 'John doe'\n * ```\n */\n public normalizeName(text: string): string {\n text = text.trim();\n text = text.charAt(0).toUpperCase() + text.slice(1);\n return text;\n }\n /**\n * Calculates the estimated reading time in milliseconds for a given text.\n *\n * @param text - The text to calculate reading time for\n * @returns The estimated reading time in milliseconds\n *\n * @remarks\n * Uses a reading speed of 1200 characters per minute.\n *\n * @example\n * ```typescript\n * const readingTime = stringUtil.calculateReadingTime('Long text here...');\n * // Returns: estimated milliseconds\n * ```\n */\n public calculateReadingTime(text: string): number {\n // Characters per minute\n const cpm = 1200;\n\n // Calculate the number of characters in the text\n const numCharacters: number = text.length;\n\n // Calculate reading time in minutes\n const readingTimeMinutes: number = numCharacters / cpm;\n\n // Convert reading time from minutes to milliseconds\n const readingTimeMilliseconds: number = readingTimeMinutes * 60 * 1000;\n\n return readingTimeMilliseconds;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\n\ndeclare var window: any;\n\n/**\n * Service for integrating Google Tag Manager (GTM) tracking.\n *\n * @remarks\n * Handles GTM script injection, variable tracking, and automatic route change tracking.\n *\n * @example\n * ```typescript\n * const gtm = inject(GoogleTagManager);\n * gtm.appendTrackingCode('GTM-XXXXXXX');\n * gtm.addVariable({ event: 'customEvent', data: 'value' });\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class GoogleTagManager {\n public trackingId!: string;\n private readonly platformId = inject(PLATFORM_ID);\n public readonly router = inject(Router);\n\n /**\n * Appends Google Tag Manager tracking code to the page.\n *\n * @param trackingId - The GTM container ID (e.g., 'GTM-XXXXXXX')\n * @param options - Optional configuration for GTM environment\n * @param options.environment - Environment configuration for preview mode\n * @param options.environment.auth - Authentication token for preview\n * @param options.environment.preview - Preview container ID\n *\n * @remarks\n * Automatically subscribes to router navigation events for page view tracking.\n */\n public appendTrackingCode(\n trackingId: string,\n options?: { environment?: { auth: string; preview: string } }\n ): void {\n try {\n if (isPlatformBrowser(this.platformId) && trackingId) {\n this.trackingId = trackingId;\n const s1: HTMLElement = document.createElement('script');\n s1.innerHTML = `\n (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'',p='${options?.environment?.preview\n ? '>m_auth=' + options?.environment.auth + '>m_preview=' + options?.environment.preview\n : ''\n }';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl+p;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','${trackingId}');\n `;\n document.head.appendChild(s1);\n const s2: HTMLElement = document.createElement('noscript');\n const s3: HTMLIFrameElement = document.createElement('iframe');\n s3.width = '0';\n s3.height = '0';\n s3.style.display = 'none';\n s3.style.visibility = 'hidden';\n s3.src = `//www.googletagmanager.com/ns.html?id=${trackingId}`;\n s2.appendChild(s3);\n (document.body as HTMLElement).prepend(s2);\n this.initSubscribers();\n }\n } catch (ex) {\n console.error('Error appending google tag manager');\n console.error(ex);\n }\n }\n /**\n * Pushes a variable or event to the GTM dataLayer.\n *\n * @param variable - The variable or event object to push to dataLayer\n *\n * @example\n * ```typescript\n * gtm.addVariable({ event: 'purchase', value: 100 });\n * ```\n */\n public addVariable(variable: any): void {\n if (isPlatformBrowser(this.platformId) && this.trackingId) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(variable);\n }\n }\n /**\n * Initializes router event subscribers for automatic page view tracking.\n *\n * @private\n */\n private initSubscribers(): void {\n this.router.events.subscribe(event => {\n try {\n if (event instanceof NavigationEnd && this.trackingId) {\n this.addVariable({\n event: 'router.NavigationEnd',\n pageTitle: document.title,\n pagePath: event.urlAfterRedirects\n });\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n}\n","/**\n * Constants for CRUD operation types.\n */\nexport const OPERATION_TYPE = {\n /** Create operation */\n CREATE: 'create',\n /** Update operation */\n UPDATE: 'update',\n /** Delete operation */\n DELETE: 'delete'\n} as const;\n\n/**\n * Type representing valid operation types.\n */\nexport type OperationType = (typeof OPERATION_TYPE)[keyof typeof OPERATION_TYPE];\n","function lengthValidator(number: string, digits: number): boolean {\n let value = true;\n if (number.trim() === '') { // No puede estar vacio\n value = false;\n } else if (number.trim().length !== digits) { // Cantidad de dígitos\n value = false;\n }\n return value;\n}\nfunction provinceValidator(number: string): boolean {\n let value = true;\n const code = Number(number);\n if ((code < 0 || code > 24) && code !== 30) {\n value = false;\n }\n return value;\n}\nfunction typeValidator(number: string, type: string): boolean {\n let value = true;\n const code = Number(number);\n switch (type) {\n case 'cedula':\n if (code < 0 || code > 6) {\n value = false;\n }\n break;\n case 'ruc_natural':\n if (code < 0 || code > 5) {\n value = false;\n }\n break;\n case 'ruc_privada':\n if (code !== 9) {\n value = false;\n }\n break;\n case 'ruc_publica':\n if (code !== 6) {\n value = false;\n }\n break;\n default:\n value = false;\n break;\n }\n return value;\n}\nfunction module10Validator(number: string, verifierCodeString: string): boolean {\n const coefficients: number[] = [2, 1, 2, 1, 2, 1, 2, 1, 2];\n const verifierCode = Number(verifierCodeString);\n const numberParts: string[] = number.split('');\n let value = true;\n let total = 0;\n let result: number;\n numberParts.forEach((part: string, index: number) => {\n let valuePosition: number = Number(part) * coefficients[index];\n if (valuePosition >= 10) {\n let newValuePosition: string[] = String(valuePosition).split('');\n let sum: string = newValuePosition.reduce((previousValue: string, currentValue: string) => {\n return String(Number(currentValue) + Number(previousValue));\n });\n valuePosition = Number(sum);\n }\n total += valuePosition;\n });\n const residue: number = total % 10;\n if (residue === 0) {\n result = 0;\n } else {\n result = 10 - residue;\n }\n if (result !== verifierCode) {\n value = false;\n }\n return value;\n}\nfunction module11Validator(number: string, verifierCodeString: string, type: string): boolean {\n const verifierCode = Number(verifierCodeString);\n const numberParts: string[] = number.split('');\n let value = true;\n let coefficients: number[];\n let total = 0;\n let result: number;\n switch (type) {\n case 'ruc_privada':\n coefficients = [4, 3, 2, 7, 6, 5, 4, 3, 2];\n break;\n case 'ruc_publica':\n coefficients = [3, 2, 7, 6, 5, 4, 3, 2];\n break;\n default:\n return false;\n break;\n }\n numberParts.forEach((part: string, index: number) => {\n let valuePosition: number = Number(part) * coefficients[index];\n total += valuePosition;\n });\n const residue: number = total % 11;\n if (residue === 0) {\n result = 0;\n } else {\n result = 11 - residue;\n }\n if (result !== verifierCode) {\n value = false;\n }\n return value;\n}\nfunction storeCodeValidator(number: string): boolean {\n let value = true;\n const code = Number(number);\n if (code < 1) {\n value = false;\n }\n return value;\n}\n/**\n * Determines the type of Ecuadorian identification number.\n *\n * @param number - The identification number to analyze\n * @returns The identification type ('cedula', 'ruc_natural', 'ruc_privada', 'ruc_publica') or null if invalid\n *\n * @example\n * ```typescript\n * const type = getIdentificationType('1234567890');\n * // Returns: 'cedula' or null\n * ```\n */\nexport function getIdentificationType(number: string): string | null {\n let type: string | null = null;\n if (lengthValidator(number, 10) &&\n provinceValidator(number.substr(0, 2)) &&\n //typeValidator(number.substr(2, 1), 'cedula') &&\n module10Validator(number.substr(0, 9), number.substr(9, 1))) {\n type = 'cedula';\n } else if (lengthValidator(number, 13) &&\n provinceValidator(number.substr(0, 2)) &&\n //typeValidator(number.substr(2, 1), 'ruc_natural') &&\n storeCodeValidator(number.substr(10, 3)) &&\n module10Validator(number.substr(0, 9), number.substr(9, 1))\n ) {\n type = 'ruc_natural';\n } else if (lengthValidator(number, 13) &&\n provinceValidator(number.substr(0, 2)) &&\n typeValidator(number.substr(2, 1), 'ruc_privada') &&\n storeCodeValidator(number.substr(10, 3)) //&&\n //module11Validator(number.substr(0, 9), number.substr(9, 1), 'ruc_privada')\n ) {\n type = 'ruc_privada';\n } else if (lengthValidator(number, 13) &&\n provinceValidator(number.substr(0, 2)) &&\n typeValidator(number.substr(2, 1), 'ruc_publica') &&\n storeCodeValidator(number.substr(9, 4)) //&&\n //module11Validator(number.substr(0, 8), number.substr(8, 1), 'ruc_publica')\n ) {\n type = 'ruc_publica';\n }\n return type;\n}","import { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { getIdentificationType } from './identification-type';\n\n/**\n * Creates a validator function for Ecuadorian identification numbers (cédula or RUC).\n *\n * @param type - The type of identification to validate\n * - 'cedula': Validates cédula (10 digits)\n * - 'ruc_natural': Validates RUC for natural persons (13 digits)\n * - 'ruc_privada': Validates RUC for private companies (13 digits)\n * - 'ruc_publica': Validates RUC for public companies (13 digits)\n * - 'ruc': Validates any type of RUC\n * - 'id': Validates any valid identification type\n * @returns A validator function that returns an error object if validation fails\n *\n * @example\n * ```typescript\n * const control = new FormControl('', [identificationValidator('cedula')]);\n * ```\n */\nexport function identificationValidator(type: 'cedula' | 'ruc_natural' | 'ruc_privada' | 'ruc_publica' | 'ruc' | 'id'): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const number: string = String(control.value);\n if (number && number.trim() !== '') {\n const parsedType = getIdentificationType(number);\n switch (type) {\n case 'cedula':\n case 'ruc_natural':\n case 'ruc_privada':\n case 'ruc_publica':\n return !parsedType || parsedType !== type ? { invalidIdentification: true } : null;\n break;\n case 'ruc':\n return !parsedType || ['ruc_natural', 'ruc_privada', 'ruc_publica'].indexOf(parsedType) === -1 ? { invalidIdentification: true } : null;\n break;\n case 'id':\n return !parsedType ? { invalidIdentification: true } : null;\n break;\n default:\n return null;\n break;\n }\n } else {\n return null;\n }\n };\n}","import { User } from './models/user';\nimport { Login } from './models/login';\nimport { Signal } from '@angular/core';\n\nexport abstract class AuthProvider {\n public abstract user: Signal<User | null>;\n public abstract login(data?: Login): Promise<boolean>;\n public abstract logout(): Promise<boolean>;\n public abstract isLoggedIn: Signal<boolean>;\n}\n","import { InjectionToken } from '@angular/core';\nimport type { AuthConfig } from './models/auth-config';\n\n/**\n * Injection token for auth configuration.\n * Provide this in app.config with values from environment.\n *\n * @example\n * ```typescript\n * import { AUTH_CONFIG } from 'auth-core';\n * import { environment } from '@/environments/environment';\n *\n * providers: [\n * { provide: AUTH_CONFIG, useValue: environment }\n * ]\n * ```\n */\nexport const AUTH_CONFIG = new InjectionToken<AuthConfig>('AUTH_CONFIG');\n","import {\n HttpRequest,\n HttpErrorResponse,\n HttpHeaders,\n HttpHandlerFn,\n HttpClient\n} from '@angular/common/http';\nimport { Injectable, computed, inject, signal } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport {\n BehaviorSubject,\n Observable,\n switchMap,\n throwError,\n catchError,\n share,\n finalize,\n filter,\n take,\n tap,\n lastValueFrom\n} from 'rxjs';\n\nimport { AUTH_CONFIG } from './auth-config.token';\nimport { FedcmCredentialRequestOptions, FedcmCredential } from './models/fedcm-credential';\nimport { AuthProvider } from './auth-provider';\nimport { Login } from './models/login';\nimport { AuthToken } from './models/auth-token';\nimport { User } from './models/user';\nimport type { Signup } from './models/signup';\n\ndeclare let navigator: Navigator & {\n userAgentData?: { brands: { brand: string }[] };\n credentials?: { get?: (options?: unknown) => Promise<Credential | null> };\n};\n\n/**\n * Concrete authentication provider responsible for handling session lifecycle,\n * secure token refresh, and profile management concerns across the app.\n *\n * @remarks\n * The service extends {@link AuthProvider} to leverage core session helpers while\n * adding stateful logic for dialogs, social login, and settings synchronization.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService extends AuthProvider {\n // Dependency injection\n private readonly config = inject(AUTH_CONFIG);\n private readonly dialog = inject(MatDialog);\n private readonly httpClient = inject(HttpClient);\n private readonly _user = signal<User | null>(null);\n\n /** Session token key */\n private readonly TOKEN_KEY = `${this.config.sessionPrefix}_sess`;\n\n public readonly user = computed(() => this._user());\n\n constructor() {\n super();\n if (this.isLoggedIn()) {\n this._user.set(this.extractUserFromToken(this.getToken()?.token ?? ''));\n }\n }\n\n /**\n * Flag indicating whether the access token is being refreshed\n */\n public refreshTokenInProgress = false;\n /**\n * Manages the access token refresh flow\n */\n private readonly refreshTokenSubject = new BehaviorSubject<AuthToken | null>(null);\n\n /**\n * Sends the authentication token to the server\n * @param request HTTP request\n * @returns\n */\n public addAuthenticationToken(request: HttpRequest<any>): HttpRequest<any> {\n const token: AuthToken | null = this.getToken();\n\n // If the access token is null, the user is not logged in; return the original request\n if (\n !token ||\n request.url.includes(this.config.auth.signinUrl) ||\n (this.config.auth.refreshTokenUrl && request.url.includes(this.config.auth.refreshTokenUrl))\n ) {\n return request;\n }\n\n // Clone the request, because the original request is immutable\n return request.clone({\n setHeaders: {\n Authorization: `Bearer ${token.token}`\n }\n });\n }\n public async connect(client: 'google'): Promise<boolean> {\n const isChrome =\n navigator.userAgentData?.brands?.some((b) => b.brand === 'Google Chrome') ?? false;\n\n if (\n this.config.fedcm &&\n isChrome &&\n 'credentials' in navigator &&\n navigator.credentials &&\n 'get' in navigator.credentials\n ) {\n try {\n const fedcm = this.config.fedcm[client];\n if (!fedcm) {\n throw new Error('No auth client exists');\n }\n const credential = await navigator.credentials.get({\n identity: {\n mode: 'active',\n providers: [\n {\n configURL: fedcm.configURL,\n clientId: fedcm.clientId,\n fields: ['name', 'email', 'picture'],\n params: {\n fetch_basic_profile: true,\n response_type: 'permission id_token',\n scope: 'email profile openid',\n include_granted_scopes: true,\n nonce: 'notprovided'\n }\n }\n ]\n },\n mediation: 'required'\n } as FedcmCredentialRequestOptions);\n if (!credential) {\n throw new Error('No credential obtained');\n }\n const fedcmCredential = credential as unknown as FedcmCredential;\n // Send the ID token to the backend\n const response = await fetch(fedcm.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n id_token: JSON.parse(fedcmCredential.token).id_token\n })\n });\n const data = await response.json();\n this.setToken(data.token);\n this._user.set(data.user);\n location.href = this.config.appPath;\n } catch (e) {\n console.error('FedCM error: ', e);\n return false;\n }\n } else {\n const url = this.config.auth.clients[client];\n if (url) {\n location.href = url;\n }\n }\n return true;\n }\n\n /**\n * Extracts user claims from a JWT token payload.\n * Maps common JWT claims (sub, email, given_name, family_name, etc.) to the User model.\n * @param jwtToken The JWT token string\n * @returns User object or null if parsing fails\n */\n private extractUserFromToken(jwtToken: string): User | null {\n if (!jwtToken) return null;\n try {\n const jwtParts = jwtToken.split('.');\n if (jwtParts.length !== 3) return null;\n const payload = JSON.parse(window.atob(jwtParts[1])) as Record<string, unknown>;\n const roles = Array.isArray(payload['roles'])\n ? (payload['roles'] as string[])\n : typeof payload['role'] === 'string'\n ? [payload['role']]\n : [];\n return {\n username: (payload['sub'] ??\n payload['preferred_username'] ??\n payload['username'] ??\n '') as string,\n roles\n };\n } catch {\n return null;\n }\n }\n\n /**\n * Extracts the expiration timestamp from a JWT token\n * @param jwtToken The JWT token string\n * @returns The expiration timestamp in seconds (JWT exp format) or undefined if not found/invalid\n */\n private extractExpirationFromToken(jwtToken: string): number | undefined {\n if (!jwtToken) {\n return undefined;\n }\n\n try {\n const jwtParts = jwtToken.split('.');\n if (jwtParts.length === 3) {\n const payload = JSON.parse(window.atob(jwtParts[1]));\n if (payload.exp) {\n // Store timestamp in seconds (JWT exp format)\n return payload.exp;\n }\n }\n } catch {\n // If JWT parsing fails, return undefined\n }\n\n return undefined;\n }\n /**\n * Handles the flow of refreshing the access token or redirecting to sign-in\n * @param err HTTP error\n * @param request HTTP request sent\n * @param next HTTP handler\n */\n public handle401Error(\n err: HttpErrorResponse,\n request: HttpRequest<any>,\n next: HttpHandlerFn\n ): Observable<any> {\n const token: AuthToken | null = this.getToken();\n if (token && token.refresh_token && this.config.auth.refreshTokenUrl) {\n if (!this.refreshTokenInProgress) {\n this.refreshTokenInProgress = true;\n this.refreshTokenSubject.next(null);\n return this.refreshToken().pipe(\n switchMap((newToken: AuthToken) => {\n if (newToken) {\n this.refreshTokenSubject.next(newToken);\n return next(this.addAuthenticationToken(request));\n }\n // If we don't get a new token, logout.\n this.logout();\n return throwError(\n () =>\n new HttpErrorResponse({\n error: {},\n headers: new HttpHeaders(),\n status: 401,\n statusText: '',\n url: undefined\n })\n );\n }),\n catchError((error) => {\n // It can't replace the access token; set error status 401 to continue flow\n return throwError(\n () =>\n new HttpErrorResponse({\n error: error.error,\n headers: error.headers,\n status: 401,\n statusText: error.statusText,\n url: error.url || undefined\n })\n );\n }),\n share(),\n finalize(() => {\n this.refreshTokenInProgress = false;\n })\n );\n } else {\n return this.refreshTokenSubject.pipe(\n filter((token) => token != null),\n take(1),\n switchMap(() => {\n return next(this.addAuthenticationToken(request));\n })\n );\n }\n } else {\n // No refresh token flow\n if (this.isLoggedIn()) {\n this.logout();\n }\n return throwError(() => err);\n }\n }\n\n /**\n * Sends sign-in to the server and obtains the authentication token\n * @param data Authentication data\n * @returns\n */\n public async login(data?: Login): Promise<boolean> {\n const token = await lastValueFrom(\n this.httpClient.post<AuthToken>(this.config.auth.signinUrl, data)\n );\n this.setToken(token);\n return true;\n }\n /**\n * Logs out the user\n */\n public async logout(): Promise<boolean> {\n this.dialog.closeAll();\n this.clearToken();\n this.clearUser();\n location.href =\n window.innerWidth < 1000 ? `${this.config.appPath}/auth` : `${this.config.appPath}/signin`;\n return true;\n }\n public async signup(\n data: Signup | Record<string, unknown>,\n options?: Record<string, unknown>\n ): Promise<unknown> {\n return lastValueFrom(this.httpClient.post(this.config.auth.signupUrl, data, options));\n }\n /**\n * If a refresh token is implemented, send it to obtain a new access token\n * @returns Access token\n */\n public refreshToken(): Observable<AuthToken> {\n const token = this.getToken();\n return this.httpClient\n .post<AuthToken>(this.config.auth.refreshTokenUrl, { refresh_token: token?.refresh_token })\n .pipe(\n tap((token: AuthToken) => {\n this.setToken(token);\n }),\n catchError((error) => {\n this.logout();\n return throwError(() => new Error(error));\n })\n );\n }\n\n /**\n * Reads the session token from the Secure cookie (client-side storage).\n * @internal\n */\n private getToken(): AuthToken | null {\n if (typeof document === 'undefined' || !document.cookie) return null;\n const match = document.cookie.match(\n new RegExp('(?:^|; )' + this.TOKEN_KEY.replace(/([.*+?^${}()|[\\]\\\\])/g, '\\\\$1') + '=([^;]*)')\n );\n const raw = match ? decodeURIComponent(match[1]) : null;\n if (!raw) return null;\n try {\n const data = JSON.parse(raw) as AuthToken;\n return data?.token ? data : null;\n } catch {\n return null;\n }\n }\n\n /**\n * Sets the authentication token in session state and in a Secure cookie (client-side).\n * Cookie: Path=/; SameSite=Strict; Secure on HTTPS; Max-Age from expiresAt or 1 day.\n *\n * @param token - The authentication token object to store\n */\n private setToken(token: AuthToken | null): void {\n const copy: AuthToken | null = token ? { ...token } : null;\n if (copy && typeof document !== 'undefined') {\n const expiresAt = this.extractExpirationFromToken(copy.token);\n const value = encodeURIComponent(JSON.stringify(copy));\n const maxAge = expiresAt\n ? Math.max(0, expiresAt - Math.round(Date.now() / 1000))\n : 24 * 60 * 60;\n let cookie = `${this.TOKEN_KEY}=${value}; Path=/; Max-Age=${maxAge}; SameSite=Strict`;\n if (typeof location !== 'undefined' && location.protocol === 'https:') cookie += '; Secure';\n document.cookie = cookie;\n this._user.set(this.extractUserFromToken(copy.token) ?? null);\n }\n }\n\n /**\n * Clears the authentication token from session state and removes the cookie.\n */\n public clearToken(): void {\n if (typeof document !== 'undefined') {\n document.cookie = `${this.TOKEN_KEY}=; Path=/; Max-Age=0`;\n }\n this.clearUser();\n }\n\n /**\n * Clears the current user from session state\n */\n public clearUser(): void {\n this._user.set(null);\n }\n\n /**\n * Computed signal indicating whether a user is currently logged in\n * Based on the presence and validity of the authentication token\n *\n * For JWT tokens, validates expiration. For other token types, only checks existence.\n *\n * @returns true if a valid token exists, false otherwise\n */\n public readonly isLoggedIn = computed(() => {\n // Depend on _user so computed re-evaluates when setToken/clearToken updates state\n this._user();\n const token = this.getToken();\n if (!token) return false;\n\n const expiresAt = this.extractExpirationFromToken(token.token);\n if (expiresAt) {\n const currentTimestamp = Math.round(Date.now() / 1000);\n return expiresAt > currentTimestamp;\n }\n return true;\n });\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router, ActivatedRouteSnapshot } from '@angular/router';\n\nimport { Storage } from '../storage';\nimport { AUTH_CONFIG } from './auth-config.token';\nimport { AuthProvider } from './auth-provider';\n\nexport const authGuard: CanActivateFn = async (route, state) => {\n const config = inject(AUTH_CONFIG);\n const router = inject(Router);\n const authProvider = inject(AuthProvider);\n const storageService = inject(Storage);\n\n if (!authProvider.isLoggedIn()) {\n storageService.set(`${config.sessionPrefix}_rdi`, state.url);\n return router.createUrlTree([window.innerWidth < 1000 ? '/auth' : '/signin']);\n }\n return true;\n};\n\nexport const loginGuard: CanActivateFn = () => {\n const authProvider = inject(AuthProvider);\n const router = inject(Router);\n return authProvider.isLoggedIn() ? router.createUrlTree(['/']) : true;\n};\n\nexport const resetGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const authProvider = inject(AuthProvider);\n const router = inject(Router);\n const token = route.queryParamMap.get('token');\n\n if (token && !authProvider.isLoggedIn()) {\n return true;\n } else if (authProvider.isLoggedIn()) {\n return router.createUrlTree(['/']);\n } else {\n router.navigateByUrl(`/error/403`, { skipLocationChange: true });\n return false;\n }\n};\n","import { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { catchError, throwError } from 'rxjs';\n\nimport { AUTH_CONFIG } from './auth-config.token';\nimport { AuthService } from './auth-service';\nimport { AuthProvider } from './auth-provider';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const authConfig = inject(AUTH_CONFIG);\n const authProvider = inject(AuthProvider) as AuthService;\n const authReq = authProvider.addAuthenticationToken(req);\n return next(authReq).pipe(\n catchError((error) => {\n if (error instanceof HttpErrorResponse) {\n switch ((error as HttpErrorResponse).status) {\n case 401:\n if (!req.url.includes(authConfig.auth.refreshTokenUrl)) {\n return authProvider.handle401Error(error, req, next);\n } else {\n authProvider.logout();\n return throwError(() => error);\n }\n default:\n return throwError(() => error);\n }\n } else {\n return throwError(() => error);\n }\n })\n );\n};\n","/*\n * Public API exports for utils library\n */\n\n// Services/Utils\nexport * from './array-util';\nexport * from './color-util';\nexport * from './csv-exporter';\nexport * from './date-util';\nexport * from './file-picker';\nexport * from './object-util';\nexport * from './storage';\nexport * from './string-util';\n\n// Monitoring\nexport * from './monitoring/google-tag-manager';\n\n// Models\nexport * from './models/csv';\nexport * from './models/error';\nexport * from './models/operation';\n\n// Constants\nexport * from './constants/csv-config';\nexport * from './constants/operation-type';\n\n// Validators\nexport * from './validators/ec/identification-validator';\nexport * from './validators/ec/identification-type';\n\n// Auth\nexport * from './auth/auth-provider';\nexport * from './auth/auth-service';\nexport * from './auth/auth-config.token';\nexport * from './auth/auth-guards';\nexport * from './auth/auth-interceptor';\nexport * from './auth/models/auth-config';\nexport * from './auth/models/auth-token';\nexport * from './auth/models/auth-token-payload';\nexport * from './auth/models/fedcm-credential';\nexport * from './auth/models/jwt-auth-provider';\nexport * from './auth/models/jwt-token-payload';\nexport * from './auth/models/login';\nexport * from './auth/models/signup';\nexport * from './auth/models/user';\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@factor_ec/utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"license": "CC-BY-NC-ND-4.0",
|
|
5
5
|
"author": "Factor",
|
|
6
6
|
"peerDependencies": {
|
|
7
|
-
"@angular/common": ">=
|
|
8
|
-
"@angular/core": ">=
|
|
9
|
-
"@apollo/client": ">=3.12.8",
|
|
10
|
-
"apollo-angular": ">=8.0.0"
|
|
11
|
-
},
|
|
12
|
-
"peerDependenciesMeta": {
|
|
13
|
-
"apollo-angular": {
|
|
14
|
-
"optional": true
|
|
15
|
-
}
|
|
7
|
+
"@angular/common": ">=21.0.0",
|
|
8
|
+
"@angular/core": ">=21.0.0"
|
|
16
9
|
},
|
|
17
10
|
"dependencies": {
|
|
18
11
|
"tslib": "^2.3.0"
|
|
19
12
|
},
|
|
20
13
|
"sideEffects": false,
|
|
21
14
|
"module": "fesm2022/factor_ec-utils.mjs",
|
|
22
|
-
"typings": "
|
|
15
|
+
"typings": "types/factor_ec-utils.d.ts",
|
|
23
16
|
"exports": {
|
|
24
17
|
"./package.json": {
|
|
25
18
|
"default": "./package.json"
|
|
26
19
|
},
|
|
27
20
|
".": {
|
|
28
|
-
"types": "./
|
|
21
|
+
"types": "./types/factor_ec-utils.d.ts",
|
|
29
22
|
"default": "./fesm2022/factor_ec-utils.mjs"
|
|
30
23
|
}
|
|
31
24
|
}
|