UNPKG

@bitrix24/b24jssdk

Version:

Bitrix24 REST API JavaScript SDK

1 lines 12.8 kB
{"version":3,"file":"text.mjs","sources":["../../../src/tools/text.ts"],"sourcesContent":["import type { DateTimeOptions } from 'luxon'\nimport { DateTime } from 'luxon'\nimport uuidv7 from './uuidv7'\nimport { Type } from './type'\n\nconst reEscape = /[&<>'\"]/g\nconst reUnescape = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34)/g\n\nconst escapeEntities: Record<string, string> = {\n '&': '&amp',\n '<': '&lt',\n '>': '&gt',\n '\\'': '&#39',\n '\"': '&quot'\n}\n\nconst unescapeEntities: Record<string, string> = {\n '&amp': '&',\n '&#38': '&',\n '&lt': '<',\n '&#60': '<',\n '&gt': '>',\n '&#62': '>',\n '&apos': '\\'',\n '&#39': '\\'',\n '&quot': '\"',\n '&#34': '\"'\n}\n\n/**\n * The `Text` class provides a set of utility methods for working with text data.\n * It includes functions for encoding and decoding HTML entities, generating random strings,\n * converting values to different data types, and changing the case and format of strings\n *\n * @see bitrix/js/main/core/src/lib/text.js\n */\nclass TextManager {\n getRandom(length = 8): string {\n return [...Array(length)]\n .map(() => Math.trunc(Math.random() * 36).toString(36))\n .join('')\n }\n\n /**\n * Generates UUID\n */\n getUniqId(): string {\n return 'xxxxxxxx-xlsx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.trunc(Math.random() * 16)\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n }\n\n /**\n * Generate uuid v7\n * @return {string}\n */\n getUuidRfc4122(): string {\n return uuidv7()\n }\n\n /**\n * Encodes all unsafe entities\n * @param {string} value\n * @return {string}\n */\n encode(value: string): string {\n if (Type.isString(value)) {\n return value.replace(reEscape, item => escapeEntities[item]!)\n }\n\n return value\n }\n\n /**\n * Decodes all encoded entities\n * @param {string} value\n * @return {string}\n */\n decode(value: string): string {\n if (Type.isString(value)) {\n return value.replace(reUnescape, item => unescapeEntities[item]!)\n }\n\n return value\n }\n\n toNumber(value: any): number {\n const parsedValue = Number.parseFloat(value)\n\n if (Type.isNumber(parsedValue)) {\n return parsedValue\n }\n\n return 0.0\n }\n\n toInteger(value: any): number {\n return this.toNumber(Number.parseInt(value, 10))\n }\n\n toBoolean(value: any, trueValues: string[] = []): boolean {\n const transformedValue = Type.isString(value) ? value.toLowerCase() : value\n return ['true', 'y', '1', 1, true, ...trueValues].includes(transformedValue)\n }\n\n toCamelCase(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n const regex = /[-_\\s]+(.)?/g\n if (!regex.test(str)) {\n return str.match(/^[A-Z]+$/)\n ? str.toLowerCase()\n : str[0]!.toLowerCase() + str.slice(1)\n }\n\n str = str.toLowerCase()\n str = str.replace(regex, (_match: string, letter) =>\n letter ? letter.toUpperCase() : ''\n )\n\n return str[0]!.toLowerCase() + str.substring(1)\n }\n\n toPascalCase(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n return this.capitalize(this.toCamelCase(str))\n }\n\n toKebabCase(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n const matches = str.match(\n /[A-Z]{2,}(?=[A-Z][a-z]+\\d*|\\b)|[A-Z]?[a-z]+\\d*|[A-Z]|\\d+/g\n )\n if (!matches) {\n return str\n }\n\n return matches.map(x => x.toLowerCase()).join('-')\n }\n\n capitalize(str: string): string {\n if (!Type.isStringFilled(str)) {\n return str\n }\n\n return str[0]!.toUpperCase() + str.substring(1)\n }\n\n numberFormat(\n number: number,\n decimals: number = 0,\n decPoint: string = '.',\n thousandsSep: string = ','\n ): string {\n const n = !Number.isFinite(number) ? 0 : number\n\n const fractionDigits = !Number.isFinite(decimals) ? 0 : Math.abs(decimals)\n\n const toFixedFix = (n: number, fractionDigits: number): number => {\n const k = Math.pow(10, fractionDigits)\n return Math.round(n * k) / k\n }\n\n const s = (fractionDigits ? toFixedFix(n, fractionDigits) : Math.round(n))\n .toString()\n .split('.')\n\n if (s[0] && s[0].length > 3) {\n s[0] = s[0].replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, thousandsSep)\n }\n\n if ((s[1] || '').length < fractionDigits) {\n s[1] = s[1] || ''\n // eslint-disable-next-line\n s[1] += new Array(fractionDigits - s[1].length + 1).join('0')\n }\n\n return s.join(decPoint)\n }\n\n /**\n * Convert string to DateTime from ISO 8601 or self template\n *\n * @param {string} dateString\n * @param {string} template\n * @param opts\n * @returns {DateTime} Convert string to DateTime from ISO 8601 or self template\n *\n * @link https://moment.github.io/luxon/#/parsing?id=parsing-technical-formats\n */\n toDateTime(\n dateString: string,\n template?: string,\n opts?: DateTimeOptions\n ): DateTime {\n if (!(typeof template === 'undefined') && Type.isStringFilled(template)) {\n return DateTime.fromFormat(dateString, template, opts)\n }\n\n return DateTime.fromISO(dateString, opts)\n }\n\n /**\n * Convert Date to Bitrix24 REST API FORMAT Y-m-d\\TH:i:sP\n * @param date\n */\n toB24Format(\n date: string | DateTime | Date\n ): string {\n if (typeof date === 'string') {\n return date\n } else if (date instanceof Date) {\n return this.toB24Format(DateTime.fromJSDate(date))\n }\n return date.toFormat('yyyy-MM-dd\\'T\\'HH:mm:ssZZ')\n }\n\n getDateForLog(): string {\n const now = DateTime.now()\n return now.toFormat('y-MM-dd HH:mm:ss')\n }\n\n buildQueryString(params: any): string {\n let result = ''\n for (const key in params) {\n if (!Object.prototype.hasOwnProperty.call(params, key)) {\n continue\n }\n\n const value = params[key]\n if (Type.isArray(value)) {\n value.forEach((valueElement: any, index: any) => {\n result\n += encodeURIComponent(key + '[' + index + ']')\n + '='\n + encodeURIComponent(valueElement)\n + '&'\n })\n } else {\n result\n += encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&'\n }\n }\n\n if (result.length > 0) {\n result = result.substring(0, result.length - 1)\n }\n\n return result\n }\n}\n\nexport const Text = new TextManager()\n"],"names":["n","fractionDigits"],"mappings":"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"}