UNPKG

dbl-utils

Version:

Utilities for dbl, adba and others projects

1 lines 28.2 kB
{"version":3,"names":["cov_2ow6ddrec9","actualCoverage","exports","sliceIntoChunks","s","splitAndFlat","generateRandomColors","evaluateColorSimilarity","normalize","slugify","randomS4","randomString","timeChunks","delay","hash","chroma_js_1","__importDefault","require","moment_1","arr","chunkSize","f","res","i","length","chunk","slice","push","arrayStrings","separator","b","r","flatMap","split","filtered","filter","Boolean","Array","from","Set","count","format","bounds","distribute","uniqueColors","step","Math","floor","colorValue","colorHex","toString","padStart","color","default","add","size","random","formattedColors","map","g","rgb","adjustedColor","isArray","c","transform","hex","value","limit","min","max","colors","totalDistance","pairsCount","cls","sort","j","distance","averageDistance","maxDistance","sqrt","pow","str","toLowerCase","replace","substring","characters","result","charactersLength","randomIndex","charAt","options","to","boundary","Error","isValid","hoursArray","fromMoment","Number","isInteger","unix","toMoment","diffHours","diff","hourMoment","nextHourMoment","boundaries","includes","endOfDay","endOf","isAfter","endOfMonth","timeout","Promise","resolve","setTimeout","string","chr","charCodeAt","LCG","constructor","seed","a","m"],"sources":["/home/diablo/dev/dbl-utils/src/utils.ts"],"sourcesContent":["import chroma from 'chroma-js';\r\nimport moment from 'moment';\r\n\r\n//----------------------------------Arrays\r\n\r\n/**\r\n * Splits an array into chunks of a given size.\n * @param arr - Array to split into chunks.\n * @param chunkSize - Size of each chunk.\n * @returns Array of chunked arrays.\n *\n * @example\n * ```ts\n * sliceIntoChunks([1,2,3,4], 2); // [[1,2],[3,4]]\n * ```\n */\nexport function sliceIntoChunks<T>(arr: T[], chunkSize: number): T[][] {\n const res: T[][] = [];\r\n for (let i = 0; i < arr.length; i += chunkSize) {\r\n const chunk = arr.slice(i, i + chunkSize);\r\n res.push(chunk);\r\n }\r\n return res;\r\n}\r\n\r\nexport type IArrayString = (null | undefined | boolean | string | IArrayString)[];\r\n\r\n/**\r\n * Splits and flattens a list of strings based on a separator.\r\n * @param {string[]} arrayStrings - Array of strings to split and flatten.\r\n * @param {string} separator - Separator to use for splitting.\r\n * @returns {string[]} Flattened and splitted array of strings.\r\n */\r\nexport function splitAndFlat(\r\n arrayStrings: IArrayString,\r\n separator: string = ' '\r\n): string[] {\r\n const r: Array<false | string> = arrayStrings.flatMap(s =>\r\n (typeof s === 'string' && s.split(separator)) as Array<false | string>\r\n );\r\n const filtered = r.filter(Boolean) as Array<string>;\r\n return Array.from(new Set(filtered));\r\n}\r\n\r\n//-----------------------------------colors\r\n\r\n/**\r\n * Generates a random set of colors with an optional format.\r\n * @param count - Number of colors to generate.\r\n * @param options - Object containing optional parameters.\r\n * @param options.format - The format of the output colors ('hex', 'rgb', 'nrgb').\r\n * @param options.bounds - The bounds for color transformation.\n * @param options.distribute - Whether the colors should be evenly distributed.\n * @returns An array of colors in the specified format.\n *\n * @example\n * ```ts\n * generateRandomColors(2, { format: 'rgb' });\n * // => [[r,g,b], [r,g,b]]\n * ```\n */\nexport function generateRandomColors(\n count: number,\r\n {\r\n format = 'hex',\r\n bounds = 1,\r\n distribute = true\r\n }: { format?: 'hex' | 'rgb' | 'nrgb', bounds?: number | number[] | { r: number, g: number, b: number }, distribute?: boolean } = {}\r\n): Array<string | [number, number, number] | number[]> {\r\n const uniqueColors = new Set<chroma.Color>();\r\n\r\n if (distribute) {\r\n const step = Math.floor(0xFFFFFF / count);\r\n for (let i = 0; i < count; i++) {\r\n const colorValue = i * step;\r\n const colorHex = '#' + colorValue.toString(16).padStart(6, '0');\r\n const color = chroma(colorHex);\r\n uniqueColors.add(color);\r\n }\r\n } else {\r\n while (uniqueColors.size < count) {\r\n uniqueColors.add(chroma.random());\r\n }\r\n }\r\n\r\n const formattedColors = Array.from(uniqueColors).map((color) => {\r\n const [r, g, b] = color.rgb();\r\n const adjustedColor: [number, number, number] = (typeof bounds === 'number' || Array.isArray(bounds))\r\n ? color.rgb().map((c: number) => transform(c, bounds)) as [number, number, number]\r\n : [\r\n transform(r, bounds.r),\r\n transform(g, bounds.g),\r\n transform(b, bounds.b)\r\n ];\r\n return chroma(...adjustedColor);\r\n });\r\n\r\n return formattedColors.map(color => {\r\n if (format === 'hex') {\r\n return color.hex();\r\n } else if (format === 'rgb') {\r\n return color.rgb();\r\n } else if (format === 'nrgb') {\r\n return color.rgb().map((c: number) => c / 255);\r\n }\r\n }) as Array<string | [number, number, number] | number[]>;\r\n}\r\n\r\n/**\r\n * Transforms a color value based on the specified limit.\r\n * @param value - The color component value.\r\n * @param limit - The limit for transformation.\r\n * @returns The transformed color component.\r\n */\r\nfunction transform(value: number, limit: number | number[]): number {\r\n const [min, max] = Array.isArray(limit) ? limit : typeof limit === 'number' ? [0, limit] : [0, 1];\r\n return ((value / 255) * (max - min) + min) * 255;\r\n}\r\n\r\n/**\r\n * Evaluates the similarity of a set of colors.\r\n * @param cls - Array of colors in hex format.\r\n * @returns A similarity score between 0 and 1, where 0 indicates all colors are distinct and 1 indicates all are similar.\r\n */\r\nexport function evaluateColorSimilarity(colors: string[]): number {\r\n let totalDistance = 0;\r\n let pairsCount = 0;\r\n const cls = colors.sort();\r\n\r\n for (let i = 0; i < cls.length; i++) {\r\n for (let j = i + 1; j < cls.length; j++) {\r\n totalDistance += chroma.distance(cls[i], cls[j]);\r\n pairsCount++;\r\n }\r\n }\r\n\r\n const averageDistance = totalDistance / pairsCount;\r\n const maxDistance = Math.sqrt(Math.pow(255, 2) * 3); // Maximum possible distance in RGB\r\n return 1 - (averageDistance / maxDistance);\r\n}\r\n\r\n//-------------------------------------strings\r\n\r\n/**\r\n * Normalizes a string by converting it to lowercase and removing diacritical marks.\r\n * @param {string} str - The string to normalize.\r\n * @returns {string} The normalized string.\r\n */\r\nexport function normalize(str: string = ''): string {\r\n return str.toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n}\r\n\r\n/**\r\n * Converts a string to a slug.\r\n * @param {string} str - The string to slugify.\r\n * @returns {string} The slugified string.\r\n */\r\nexport function slugify(str: string = ''): string {\r\n return normalize(str)\r\n .replace(/\\s/g, '-')\r\n .replace(/[^a-zA-Z\\d\\-]+/g, '')\r\n .replace(/-+/g, '-');\r\n}\r\n\r\n/**\r\n * Generates a random four-character string consisting of hexadecimal digits.\r\n * @returns {string} The random four-character string.\r\n */\r\nexport function randomS4(): string {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n}\r\n\r\n/**\r\n * Generates a random string of the specified length using the provided characters.\r\n *\r\n * @param {number} [length=16] - The length of the generated string. Default is 16.\r\n * @param {string} [characters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'] - A string representing the characters to be used. Default includes uppercase, lowercase letters, and digits.\r\n * @returns {string} A random string composed of the specified characters.\r\n */\r\nexport function randomString(\r\n length: number = 16,\r\n characters: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\r\n): string {\r\n let result = '';\r\n const charactersLength = characters.length;\r\n\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * charactersLength);\r\n result += characters.charAt(randomIndex);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n\r\n//------------------------------------------time\r\n\r\n/**\r\n * Generates an array of time intervals between two dates.\r\n * @param {Object} options - Options for generating time intervals.\r\n * @param {string|number} options.from - Start date in string format or as a UNIX timestamp.\r\n * @param {string|number} options.to - End date in string format or as a UNIX timestamp.\r\n * @param {number} options.step - The step size in hours for each time interval.\r\n * @param {string} [options.boundary] - Restrict chunks to 'day', 'month', or 'day,month' boundaries.\n * @returns An array of objects representing each time interval.\n *\n * @example\n * ```ts\n * timeChunks({ from: '2020-01-01', to: '2020-01-02', step: 6 });\n * ```\n */\nexport function timeChunks(options: { from: string | number, to: string | number, step: number, boundary?: string }): { from: string, to: string, step: number }[] {\n const { from, to, step, boundary } = options;\r\n\r\n if (!(step > 0)) {\r\n throw new Error('Invalid step ' + step);\r\n }\r\n\r\n if (!moment(from).isValid()) {\r\n throw new Error('Invalid date ' + from);\r\n }\r\n\r\n if (!moment(to).isValid()) {\r\n throw new Error('Invalid date ' + to);\r\n }\r\n\r\n const hoursArray = [];\r\n const fromMoment = Number.isInteger(from) ? moment.unix(from as number) : moment(from);\r\n const toMoment = Number.isInteger(to) ? moment.unix(to as number) : moment(to);\r\n const diffHours = toMoment.diff(fromMoment, 'hours');\r\n\r\n for (let i = 0; i < diffHours; i += step) {\r\n let hourMoment = moment(from).add(i, 'hours');\r\n let nextHourMoment = moment(from).add(i + step, 'hours');\r\n\r\n if (boundary) {\r\n const boundaries = boundary.split(',');\r\n if (boundaries.includes('day')) {\r\n const endOfDay = moment(hourMoment).endOf('day');\r\n nextHourMoment = nextHourMoment.isAfter(endOfDay) ? endOfDay : nextHourMoment;\r\n }\r\n\r\n if (boundaries.includes('month')) {\r\n const endOfMonth = moment(hourMoment).endOf('month');\r\n nextHourMoment = nextHourMoment.isAfter(endOfMonth) ? endOfMonth : nextHourMoment;\r\n }\r\n }\r\n\r\n hoursArray.push({\r\n from: hourMoment.format(),\r\n to: nextHourMoment.isAfter(toMoment) ? moment(to).format() : nextHourMoment.format(),\r\n step\r\n });\r\n }\r\n return hoursArray;\r\n}\r\n\r\n/**\r\n * Resolves the promise after a given timeout.\r\n * @param {number} timeout - Milliseconds to wait before resolving.\r\n * @returns {Promise<void>} The promise that resolves after the timeout.\r\n */\r\nexport function delay(timeout: number): Promise<void> {\r\n return new Promise(resolve => setTimeout(resolve, timeout));\r\n}\r\n\r\n//-------------------------------------------------------- numbers\r\n\r\n/**\r\n * Computes the hash value of a string.\r\n * @param {string} string - The string to hash.\r\n * @returns {number} The computed hash value.\r\n */\r\nexport function hash(string: string): number {\r\n let hash = 0, i, chr;\r\n for (i = 0; i < string.length; i++) {\r\n chr = string.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0; // Convert to 32-bit integer\r\n }\r\n return hash;\r\n}\r\n\r\n/**\r\n * Linear Congruential Generator (LCG) class for pseudo-random number generation.\r\n * @class LCG\r\n */\r\nexport class LCG {\r\n private a: number;\r\n private c: number;\r\n private m: number;\r\n private seed: number;\r\n\r\n constructor(seed: number) {\r\n this.a = 1664525;\r\n this.c = 1013904223;\r\n this.m = 2 ** 32;\r\n this.seed = seed;\r\n }\r\n\r\n /**\r\n * Generates a pseudo-random number between 0 and 1.\r\n * @returns {number} The generated pseudo-random number.\r\n */\r\n random(): number {\r\n this.seed = (this.a * this.seed + this.c) % this.m;\r\n return this.seed / this.m;\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","ignoreList":[]}