@nativerent/js-utils 1.2.1 → 1.2.3
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/dist/index.d.ts +74 -95
- package/dist/index.js +649 -619
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/src/index.ts +18 -3
- package/tests/tests.ts +129 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { FlattenableObject, Primitive, SimpleObject } from \"./types\";\n\nexport function debounce(fn: Function, delay: number): () => void {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function (...args: any[]) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn.apply(null, args), delay);\n };\n}\n\nexport function throttle(fn: Function, delay: number) {\n let lastCall = 0;\n\n return function (...args: any[]) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return;\n }\n lastCall = now;\n fn(...args);\n };\n}\n\nexport function isObject(value: any): value is object {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function isFn(value: any): value is Function {\n return typeof value === \"function\";\n}\n\nexport function isStr(value: any): boolean {\n return typeof value === \"string\";\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\";\n}\n\n/**\n * Check if the given argument is a string which is not empty\n */\nexport function isNotEmptyString(value: any) {\n return isString(value) && value.length;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement || value instanceof SVGElement;\n}\n\nexport function isNum(value: any): value is number {\n return typeof value === \"number\";\n}\n\nexport function isBool(value: any): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isUndef(value: any): value is undefined {\n return typeof value === \"undefined\";\n}\n\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === \"undefined\";\n}\n\nexport function isDefined(value: any): boolean {\n return !isUndef(value);\n}\n\n/**\n * Returns an array containing all the elements of array1 that are not in array2 and vice-versa\n */\nexport function arrayDiff(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n): Array<Primitive | null | undefined> {\n return array1\n .filter((value) => !array2.includes(value))\n .concat(array2.filter((value: any) => !array1.includes(value)));\n}\n\n/**\n * Returns an array of elements present in array1 and array2\n */\nexport function arrayIntersect(\n array1: Array<Primitive | null | undefined>,\n array2: Array<Primitive | null | undefined>,\n) {\n return array1.filter((value) => array2.includes(value));\n}\n\nexport function deepCloneObject<Type>(object: Type): Type {\n return JSON.parse(JSON.stringify(object));\n}\n\nexport function getNumericStyleProp(prop: string, el: Element) {\n const styles: { [key: string]: any } = window.getComputedStyle(el);\n return !isNullOrUndef(styles[prop]) ? parseInt(styles[prop].slice(0, -2)) : 0;\n}\n\nexport function objectHasProp(\n obj: any,\n prop: string | number | symbol,\n): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/**\n * Custom version of Object.keys()\n */\nexport function getObjectKeys(object: object): string[] {\n let key;\n let keys = [];\n\n for (key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\n/**\n * Convert an object to a query string\n * Works with primitive objects\n */\nexport function objectToQueryString(object: {\n [key: string | number]:\n | Primitive\n | Array<Primitive | null | undefined>\n | SimpleObject\n | { [key: string | number]: SimpleObject }\n | undefined\n | null;\n}): string {\n return Object.entries(object)\n .map(([k, v]) => {\n if (Array.isArray(v)) {\n return v\n .map((item) => `${k}[]=${encodeURIComponent(item || \"\")}`)\n .join(\"&\");\n } else if (isObject(v)) {\n return `${k}=${encodeURIComponent(JSON.stringify(v))}`;\n }\n return `${k}=${encodeURIComponent(v || \"\")}`;\n })\n .join(\"&\");\n}\n\nexport function countObjectInnerLength(object: {\n [key: string | number]: any[];\n}) {\n const obj = Object.values(object);\n const len = obj.length;\n\n if (len === 0) {\n return 0;\n } else if (len === 1) {\n return obj[0].length;\n } else {\n return obj.reduce((acc: any, cur) => {\n if (Array.isArray(acc)) {\n acc = acc.length;\n }\n if (cur) {\n acc += cur.length;\n }\n return acc;\n });\n }\n}\n\n/**\n * Check if the element is in viewport\n */\nexport function isElementVisible(element: HTMLElement, minVisiblePercent = 50) {\n const elementCoords = element.getBoundingClientRect();\n const elementHeight = elementCoords.height;\n\n if (!elementHeight) {\n return false;\n }\n\n const elementTop = elementCoords.top;\n const elementBottom = elementCoords.bottom;\n const viewPortHeight = window.innerHeight;\n\n const elementVisibleHeight =\n elementTop > 0\n ? // the element is in or below viewport\n viewPortHeight - elementTop\n : // the element is still in or above viewport\n elementBottom;\n\n return (elementVisibleHeight / elementHeight) * 100 >= minVisiblePercent;\n}\n\nexport function decodeSafeURL(url: string): string {\n try {\n return decodeURI(url);\n } catch (e) {\n return url;\n }\n}\n\nexport function getSafeURL(url?: string): string {\n url = url ? url : location.href;\n return encodeURI(decodeSafeURL(url));\n}\n\nexport function parseURL(url: string): URL {\n return new URL(url);\n}\n\nexport function encodeQueryString(url: string): string {\n if (url.length > 0) {\n const index = url.indexOf(\"?\");\n if (index >= 0) {\n return url.substring(0, index) + parseURL(url).search;\n }\n }\n\n return url;\n}\n\nexport function injectScript(filename: string): void {\n const script = document.createElement(\"script\");\n script.src = filename;\n script.async = true;\n document.head.appendChild(script);\n}\n\nexport function injectStyleLink(filename: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = filename;\n document.head.appendChild(link);\n}\n\nexport function toBinaryStr(str: string) {\n const encoder = new TextEncoder();\n // 1: split the UTF-16 string into an array of bytes\n const charCodes = encoder.encode(str);\n // 2: concatenate byte data to create a binary string\n return String.fromCharCode(...charCodes);\n}\n\n/**\n * Find a DOM element where an ad unit should be rendered to\n */\nexport function getHtmlElement(id: string) {\n return document.getElementById(id);\n}\n\n/**\n * Convert an HTML string into a list of nodes\n */\nexport function stringToHtmlElements(html: string): NodeListOf<ChildNode> {\n const template = createHtmlElement(\"div\");\n template.innerHTML = html.replace(/[\\r\\n]/gm, \"\").trim();\n return template.childNodes;\n}\n\n/**\n * Creates an HTML element and sets attributes\n */\nexport function createHtmlElement(\n type: string,\n attributes: { [key: string]: string } = {},\n): HTMLElement {\n const attrs = getObjectKeys(attributes);\n const element = document.createElement(type);\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n return element;\n}\n\n/**\n * Insert HTML elements into DOM\n */\nexport function insertHtmlElements(\n nodes: NodeListOf<Node>,\n appendTo?: Element | ShadowRoot,\n) {\n appendTo = appendTo || document.body;\n\n const fragment = new DocumentFragment();\n\n for (let i = 0; i < nodes.length; i++) {\n // skip non tags and non text, 3 for text nodes\n if (!isHTMLElement(nodes[i]) && nodes[i].nodeType !== 3) {\n continue;\n }\n\n const node = nodes[i] as HTMLElement;\n let newNode;\n\n switch (node.nodeName.toLowerCase()) {\n case \"script\":\n const src = node.getAttribute(\"src\");\n\n if (!isNullOrUndef(src) && src.length > 0) {\n newNode = createScriptElement(\n src,\n false,\n flatHtmlAttributes(node.attributes),\n );\n } else {\n newNode = createScriptElement(\n node.innerHTML,\n true,\n flatHtmlAttributes(node.attributes),\n );\n }\n break;\n\n case \"style\":\n newNode = createStyleElement(node.textContent);\n break;\n\n case \"svg\":\n newNode = createSvgElement(\n node.innerHTML,\n flatHtmlAttributes(node.attributes),\n );\n break;\n\n case \"#text\":\n newNode = document.createTextNode(node.textContent ?? \"\");\n break;\n\n default:\n newNode = createHtmlElement(\n node.tagName,\n flatHtmlAttributes(node.attributes),\n );\n\n // recursive\n if (node.childNodes.length) {\n insertHtmlElements(node.childNodes, newNode);\n } else {\n newNode.innerHTML = node.innerHTML;\n }\n }\n\n fragment.appendChild(newNode);\n }\n\n appendTo.appendChild(fragment);\n}\n\n/**\n * Make a simple object which contains only attribute name and value\n */\nexport function flatHtmlAttributes(attributes?: NamedNodeMap) {\n let flatAttributes: { [key: string]: string } = {};\n\n if (!isNullOrUndef(attributes)) {\n for (let i = 0; i < attributes.length; i++) {\n let attr = attributes[i];\n\n if (!isUndef(attr)) {\n flatAttributes[attr.name] = attr.value;\n }\n }\n }\n\n return flatAttributes;\n}\n\n/**\n * Create a <script> element\n */\nexport function createScriptElement(\n js: string,\n inline: boolean = false,\n attributes: { [key: string]: string } = {},\n) {\n const attrs = isObject(attributes) ? getObjectKeys(attributes) : [];\n const element = createHtmlElement(\"script\") as HTMLScriptElement;\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n if (inline) {\n element.appendChild(document.createTextNode(js));\n } else {\n element.async = true;\n element.src = js;\n }\n\n return element;\n}\n\n/**\n * Create a <style> element\n */\nexport function createStyleElement(css: string | null) {\n const element = createHtmlElement(\"style\");\n\n if (css) {\n element.appendChild(document.createTextNode(css));\n }\n\n return element;\n}\n\n/**\n * Create a <link> element\n */\nexport function createLinkElement(href: string) {\n const element = createHtmlElement(\"link\") as HTMLLinkElement;\n\n element.rel = \"stylesheet\";\n element.href = href;\n\n return element;\n}\n\n/**\n * Create svg elements\n */\nexport function createSvgElement(\n content: string,\n attributes: { [key: string]: string },\n) {\n const attrs = getObjectKeys(attributes);\n const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\n if (attrs.length) {\n attrs.forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n\n element.innerHTML = content;\n\n return element;\n}\n\n/**\n * Create an image element to use as a tracking pixel\n */\nexport function createPixelElement(src: string) {\n const image = document.createElement(\"img\");\n\n image.src = src;\n image.width = 1;\n image.height = 1;\n image.style.position = \"absolute\";\n image.style.left = \"-99999px\";\n\n return image;\n}\n\n/**\n * Append a new script element to the DOM head\n */\nexport function insertJs(js: string, inline = false) {\n const element = createScriptElement(js, inline);\n\n document.head.appendChild(element);\n}\n\n/**\n * Append a new style element to the DOM head\n */\nexport function insertCss(css: string, className?: string, external = false) {\n const element = external ? createLinkElement(css) : createStyleElement(css);\n\n if (className) {\n element.className = className;\n }\n\n document.head.appendChild(element);\n}\n\n/**\n * Get screen sizes\n */\nexport function getScreenSize(): { width: number; height: number } {\n let width, height;\n\n if (window.screen) {\n width = screen.width;\n height = screen.height;\n } else {\n width = window.innerWidth;\n height = window.innerHeight;\n }\n\n return {\n width: width,\n height: height,\n };\n}\n\n/**\n * Get a random integer between min and max\n */\nexport function getRandomInt(min = 0, max = 4294967295) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min)) + min;\n}\n\n/**\n * Implementation of Java's String.hashCode() method\n */\nexport function hashCode(str: string) {\n let hash = 0,\n chr;\n\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // convert to 32bit integer\n }\n\n return hash >>> 0;\n}\n\n/**\n * Executes a callback as soon as DOM is interactive\n */\nexport function onDOMReady(callback: Function, ...args: any[]) {\n if (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n ) {\n callback(...args);\n } else {\n document.addEventListener(\"DOMContentLoaded\", () => callback(...args));\n }\n}\n\n/**\n * Calculate the percentage of two values\n *\n * @param a\n * @param b\n * @return number\n */\nexport function toPercent(a: number, b: number): number {\n return b > 0 ? (a / b) * 100 : 0;\n}\n\n/**\n * Make a camelCase string\n *\n * @param string\n * @return string\n */\nexport function toCamelCase(string: string): string {\n return string\n .split(new RegExp(/[-_.]/))\n .reduce(\n (a: string, b: string) => a + b.charAt(0).toUpperCase() + b.slice(1),\n );\n}\n\n/**\n * Make a snake_case string\n *\n * @param string\n * @return string\n */\nexport function toSnakeCase(string: string): string {\n return toCamelCase(string)\n .replace(/(^[A-Z])?([A-Z])/gm, \"$1_$2\")\n .toLowerCase();\n}\n\n/**\n * Transform the first letter of the given string to the upper case\n *\n * @param string\n * @return string\n */\nexport function capitalize(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Registry independent string sorting\n *\n * @param first\n * @param second\n */\nexport function sortByAlphabet(first: string, second: string): number {\n return first.toLowerCase() > second.toLowerCase() ? 1 : -1;\n}\n\n/**\n * @param length\n * @return string of max length 100\n */\nexport function getRandomStr(length?: number): string {\n length = length ? (length > 100 ? 100 : length) : 10;\n\n let str = Math.random().toString(36).substring(2);\n\n while (str.length < length) {\n str += Math.random().toString(36).substring(2);\n }\n\n const result = str.slice(-length);\n return isNaN(Number(result)) ? result : getRandomStr(length);\n}\n\nexport function getRandomItem(items: any[]): any {\n return items[Math.floor(Math.random() * items.length)];\n}\n\n/**\n * Summarize elements of the given array\n *\n * @param values\n * @return number | string - a summary of all the numbers in the array or an empty string if\n * there was only NaNs\n */\nexport function sumArray(values: Array<any>): number | string {\n if (values.every((value: any) => isNaN(value))) {\n return \"\";\n } else {\n return values.reduce((sum: any, curr: any) => {\n const value = Number(curr);\n\n if (!isNaN(value)) {\n return sum + value;\n } else {\n return sum;\n }\n }, 0);\n }\n}\n\n/**\n * Returns an array of the object keys which values are not present in filter\n *\n * @param obj\n * @param values\n */\nexport function filterObjectKeysByValues(\n obj: { [key: string]: any },\n values: Array<string | number | boolean | null | undefined>,\n): string[] {\n values = Array.isArray(values) ? values : Array(values);\n\n const keys = [];\n\n for (const key in obj) {\n if (!values.includes(obj[key])) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n\nexport function getFromObject(object: object, key: string): any {\n return key.split(\".\").reduce((a: any, b: any) => {\n return a[b];\n }, object);\n}\n\nexport function fireBlurEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"blur\", element, delay);\n}\n\nexport function fireInputEvent(\n element: string | Element | null,\n delay: number = 0,\n): void {\n fireEvent(\"input\", element, delay);\n}\n\nexport function fireEvent(\n eventName: string,\n element: string | Element | null,\n delay: number = 0,\n): void {\n setTimeout(() => {\n if (isString(element)) {\n element = document.querySelector(element);\n }\n\n if (!isNullOrUndef(element)) {\n element.dispatchEvent(\n new Event(eventName, {\n bubbles: true,\n }),\n );\n }\n }, delay);\n}\n\nexport function hasObjectChanged(\n object: { [key: string]: any },\n values: any[],\n): boolean {\n let hasChanged = false;\n\n for (const key in object) {\n let oldVal = object[key];\n let [, newVal] = values.find(([newKey]) => key === newKey);\n\n if (isObject(oldVal)) {\n if (!isObject(newVal)) {\n hasChanged = true;\n } else {\n hasChanged = hasObjectChanged(oldVal, Object.entries(newVal));\n }\n } else if (Array.isArray(newVal) || Array.isArray(oldVal)) {\n newVal = Array.isArray(newVal) ? newVal : [];\n oldVal = Array.isArray(oldVal) ? oldVal : [];\n hasChanged =\n getObjectKeys(oldVal).length !== getObjectKeys(newVal).length;\n if (!hasChanged) {\n hasChanged = arrayDiff(newVal, oldVal).length > 0;\n }\n } else {\n hasChanged = areDiff(newVal, oldVal);\n }\n\n if (hasChanged) {\n break;\n }\n }\n\n return hasChanged;\n}\n\nexport function roundBigNum(number: number): number {\n const digitsNum = Math.trunc(number).toString().length;\n\n let roundTo = 0;\n switch (true) {\n case digitsNum > 2 && digitsNum < 5:\n roundTo = 100;\n break;\n case digitsNum >= 5:\n roundTo = 10000;\n break;\n }\n\n return roundTo ? Math.round(number / roundTo) * roundTo : number;\n}\n\nexport function extractNumbers(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/[^0-9]/g, \"\");\n}\n\nexport function removeSpaces(value: any): string {\n if (!isStr(value) && !isNum(value)) {\n return \"\";\n }\n return value.toString().replace(/\\s/g, \"\");\n}\n\nexport function roundUp(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.ceil(num * multiplier) / multiplier;\n}\n\nexport function roundDown(num: number, precision: number): number {\n const multiplier = Number(\"1\".padEnd(precision + 1, \"0\"));\n return Math.floor(num * multiplier) / multiplier;\n}\n\nexport function areDiff(\n val1?: Primitive | null,\n val2?: Primitive | null,\n strict?: boolean,\n): boolean {\n if (strict) {\n return val1 !== val2;\n }\n\n // at least one value is not empty\n if (Boolean(val1) || Boolean(val2)) {\n return val1 != val2;\n }\n\n // both empty, but not equally empty!\n // each one may be one of: empty string, null or undefined\n return false;\n}\n\nexport function flattenObject(obj: FlattenableObject, prefix = \"\") {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? prefix + \".\" : \"\";\n if (\n (isObject(obj[k]) || Array.isArray(obj[k])) &&\n getObjectKeys(obj[k]).length > 0\n ) {\n Object.assign(acc, flattenObject(obj[k], pre + k));\n } else {\n acc[pre + k] = obj[k];\n }\n return acc;\n }, {} as FlattenableObject);\n}\n\nexport function flattenObjectAsArray(obj: FlattenableObject) {\n const result: FlattenableObject = {};\n const flat = flattenObject(obj);\n Object.keys(flat).forEach((key) => {\n const newKey = key.replaceAll(/\\.([^.]+)/g, \"[$1]\");\n result[newKey] = flat[key];\n });\n\n return result;\n}\n\nexport function parseObjectPathStr(pathStr: string): string[] {\n const pathParts = pathStr.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n\n if (pathParts.length > 1 && pathParts[1].includes(\"[\")) {\n return [pathParts[0], ...parseObjectPathStr(pathParts[1])];\n }\n\n return pathParts;\n}\n\nexport function formatNumber(\n num: number | string,\n fractionDigits?: number,\n): string {\n fractionDigits = isNullOrUndef(fractionDigits) ? 2 : fractionDigits;\n return new Intl.NumberFormat(\"ru-RU\", {\n style: \"decimal\",\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n })\n .format(Number(num))\n .replace(\",\", \".\")\n .replace(/\\u00A0/g, \" \"); // charCode 160, White-space\n}\n\nexport function formatNumberWithSign(\n num: number | string,\n fractionDigits?: number,\n): string {\n return formatWithSign(num, formatNumber(num, fractionDigits));\n}\n\nexport function formatPercent(num: number | string): string {\n return formatNumber(num) + \"%\";\n}\n\nexport function formatWithSign(\n num: number | string,\n numString?: string,\n): string {\n numString = numString ? numString : num.toString();\n return (Number(num) < 0 ? \"\" : \"+\") + numString;\n}\n\nexport function autoSizeText(\n el: HTMLElement,\n height: number,\n minFontSize: number,\n maxFontSize: number = 50,\n) {\n let attempts = 30;\n\n const resizeText = () => {\n if (getTextHeight() === 0) {\n return;\n }\n while (attempts && getTextHeight() > height) {\n attempts--;\n reduceText();\n }\n while (attempts && getTextHeight() < height) {\n attempts--;\n enlargeText();\n }\n };\n\n const reduceText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize - 1;\n if (fontSize > 1 && newFontSize >= minFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const enlargeText = () => {\n const fontSize = getNumericStyleProp(\"fontSize\", el);\n const newFontSize = fontSize + 1;\n if (newFontSize <= maxFontSize) {\n el.style.fontSize = `${newFontSize}px`;\n }\n };\n\n const getTextHeight = () =>\n Math.floor(\n el.scrollHeight -\n getNumericStyleProp(\"paddingTop\", el) -\n getNumericStyleProp(\"paddingBottom\", el),\n );\n\n resizeText();\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/index.ts","../src/types.d.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -274,7 +274,7 @@ export function insertHtmlElements(
|
|
|
274
274
|
const node = nodes[i];
|
|
275
275
|
|
|
276
276
|
// Allow elements + text nodes only
|
|
277
|
-
if (!isHTMLElement(node) && node.nodeType !== Node.TEXT_NODE) {
|
|
277
|
+
if (!node || (!isHTMLElement(node) && node.nodeType !== Node.TEXT_NODE)) {
|
|
278
278
|
continue;
|
|
279
279
|
}
|
|
280
280
|
|
|
@@ -820,8 +820,9 @@ export function flattenObjectAsArray(
|
|
|
820
820
|
export function parseObjectPathStr(pathStr: string): string[] {
|
|
821
821
|
const pathParts = pathStr.replace(/\[/g, ".").replace(/\]/g, "").split(".");
|
|
822
822
|
|
|
823
|
-
|
|
824
|
-
|
|
823
|
+
const [first, second] = pathParts;
|
|
824
|
+
if (isString(first) && isString(second) && second.includes("[")) {
|
|
825
|
+
return [first, ...parseObjectPathStr(second)];
|
|
825
826
|
}
|
|
826
827
|
|
|
827
828
|
return pathParts;
|
|
@@ -908,3 +909,17 @@ export function autoSizeText(
|
|
|
908
909
|
|
|
909
910
|
resizeText();
|
|
910
911
|
}
|
|
912
|
+
|
|
913
|
+
export async function monitor(
|
|
914
|
+
fn: Function,
|
|
915
|
+
interval: number = 10,
|
|
916
|
+
attempts: number = 100,
|
|
917
|
+
): Promise<boolean> {
|
|
918
|
+
for (let i = 0; i < attempts; i++) {
|
|
919
|
+
if (await fn()) return true;
|
|
920
|
+
if (i < attempts - 1) {
|
|
921
|
+
await new Promise<void>((r) => setTimeout(r, interval));
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
return false;
|
|
925
|
+
}
|
package/tests/tests.ts
CHANGED
|
@@ -72,6 +72,7 @@ import {
|
|
|
72
72
|
toCamelCase,
|
|
73
73
|
toPercent,
|
|
74
74
|
toSnakeCase,
|
|
75
|
+
monitor,
|
|
75
76
|
} from "../src";
|
|
76
77
|
|
|
77
78
|
test.each([
|
|
@@ -2233,6 +2234,134 @@ describe("autoSizeText (using real getNumericStyleProp)", () => {
|
|
|
2233
2234
|
});
|
|
2234
2235
|
});
|
|
2235
2236
|
|
|
2237
|
+
describe("monitor", () => {
|
|
2238
|
+
beforeEach(() => jest.useFakeTimers());
|
|
2239
|
+
|
|
2240
|
+
afterEach(() => {
|
|
2241
|
+
jest.useRealTimers();
|
|
2242
|
+
jest.restoreAllMocks();
|
|
2243
|
+
});
|
|
2244
|
+
|
|
2245
|
+
test("returns true immediately when fn resolves true on first attempt (no sleep)", async () => {
|
|
2246
|
+
const fn = jest.fn().mockResolvedValue(true);
|
|
2247
|
+
|
|
2248
|
+
const promise = monitor(fn, 10, 100);
|
|
2249
|
+
|
|
2250
|
+
// fn resolves immediately; no timers needed
|
|
2251
|
+
await expect(promise).resolves.toBe(true);
|
|
2252
|
+
expect(fn).toHaveBeenCalledTimes(1);
|
|
2253
|
+
// no sleeps scheduled
|
|
2254
|
+
expect(jest.getTimerCount()).toBe(0);
|
|
2255
|
+
});
|
|
2256
|
+
|
|
2257
|
+
test("retries until fn resolves true, sleeping between attempts", async () => {
|
|
2258
|
+
const fn = jest
|
|
2259
|
+
.fn()
|
|
2260
|
+
.mockResolvedValueOnce(false)
|
|
2261
|
+
.mockResolvedValueOnce(false)
|
|
2262
|
+
.mockResolvedValueOnce(true);
|
|
2263
|
+
|
|
2264
|
+
const promise = monitor(fn, 25, 10);
|
|
2265
|
+
|
|
2266
|
+
// attempt 1 happens immediately
|
|
2267
|
+
await Promise.resolve();
|
|
2268
|
+
expect(fn).toHaveBeenCalledTimes(1);
|
|
2269
|
+
|
|
2270
|
+
// sleep 25ms -> attempt 2
|
|
2271
|
+
await jest.advanceTimersByTimeAsync(25);
|
|
2272
|
+
expect(fn).toHaveBeenCalledTimes(2);
|
|
2273
|
+
|
|
2274
|
+
// sleep 25ms -> attempt 3 succeeds
|
|
2275
|
+
await jest.advanceTimersByTimeAsync(25);
|
|
2276
|
+
await expect(promise).resolves.toBe(true);
|
|
2277
|
+
|
|
2278
|
+
expect(fn).toHaveBeenCalledTimes(3);
|
|
2279
|
+
});
|
|
2280
|
+
|
|
2281
|
+
test("returns false after exhausting attempts", async () => {
|
|
2282
|
+
const fn = jest.fn().mockResolvedValue(false);
|
|
2283
|
+
|
|
2284
|
+
const promise = monitor(fn, 10, 3);
|
|
2285
|
+
|
|
2286
|
+
// attempt 1
|
|
2287
|
+
await Promise.resolve();
|
|
2288
|
+
expect(fn).toHaveBeenCalledTimes(1);
|
|
2289
|
+
|
|
2290
|
+
// attempt 2
|
|
2291
|
+
await jest.advanceTimersByTimeAsync(10);
|
|
2292
|
+
expect(fn).toHaveBeenCalledTimes(2);
|
|
2293
|
+
|
|
2294
|
+
// attempt 3 (last) - no further sleep
|
|
2295
|
+
await jest.advanceTimersByTimeAsync(10);
|
|
2296
|
+
await expect(promise).resolves.toBe(false);
|
|
2297
|
+
|
|
2298
|
+
expect(fn).toHaveBeenCalledTimes(3);
|
|
2299
|
+
expect(jest.getTimerCount()).toBe(0);
|
|
2300
|
+
});
|
|
2301
|
+
|
|
2302
|
+
test("does not sleep after the last attempt (even if fn returns false)", async () => {
|
|
2303
|
+
const fn = jest.fn().mockResolvedValue(false);
|
|
2304
|
+
|
|
2305
|
+
const promise = monitor(fn, 50, 2);
|
|
2306
|
+
|
|
2307
|
+
// attempt 1 then one sleep scheduled
|
|
2308
|
+
await Promise.resolve();
|
|
2309
|
+
expect(fn).toHaveBeenCalledTimes(1);
|
|
2310
|
+
expect(jest.getTimerCount()).toBe(1);
|
|
2311
|
+
|
|
2312
|
+
// advance once -> attempt 2 (last)
|
|
2313
|
+
await jest.advanceTimersByTimeAsync(50);
|
|
2314
|
+
await expect(promise).resolves.toBe(false);
|
|
2315
|
+
|
|
2316
|
+
// should not schedule another sleep
|
|
2317
|
+
expect(fn).toHaveBeenCalledTimes(2);
|
|
2318
|
+
expect(jest.getTimerCount()).toBe(0);
|
|
2319
|
+
});
|
|
2320
|
+
|
|
2321
|
+
test("uses default interval=10 and attempts=100 when omitted", async () => {
|
|
2322
|
+
const fn = jest.fn().mockResolvedValue(false);
|
|
2323
|
+
|
|
2324
|
+
const promise = monitor(fn); // defaults
|
|
2325
|
+
|
|
2326
|
+
// attempt 1
|
|
2327
|
+
await Promise.resolve();
|
|
2328
|
+
expect(fn).toHaveBeenCalledTimes(1);
|
|
2329
|
+
|
|
2330
|
+
// drive 99 more attempts with 99 sleeps of 10ms each
|
|
2331
|
+
for (let i = 0; i < 99; i++) {
|
|
2332
|
+
await jest.advanceTimersByTimeAsync(10);
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
await expect(promise).resolves.toBe(false);
|
|
2336
|
+
expect(fn).toHaveBeenCalledTimes(100);
|
|
2337
|
+
});
|
|
2338
|
+
|
|
2339
|
+
test("awaits fn each time (supports async fn that resolves later)", async () => {
|
|
2340
|
+
const fn = jest
|
|
2341
|
+
.fn()
|
|
2342
|
+
.mockImplementationOnce(
|
|
2343
|
+
() => new Promise<boolean>((res) => setTimeout(() => res(false), 5)),
|
|
2344
|
+
)
|
|
2345
|
+
.mockImplementationOnce(
|
|
2346
|
+
() => new Promise<boolean>((res) => setTimeout(() => res(true), 5)),
|
|
2347
|
+
);
|
|
2348
|
+
|
|
2349
|
+
const promise = monitor(fn, 20, 5);
|
|
2350
|
+
|
|
2351
|
+
// attempt 1's internal 5ms
|
|
2352
|
+
await jest.advanceTimersByTimeAsync(5);
|
|
2353
|
+
expect(fn).toHaveBeenCalledTimes(1);
|
|
2354
|
+
|
|
2355
|
+
// then monitor sleeps 20ms before attempt 2
|
|
2356
|
+
await jest.advanceTimersByTimeAsync(20);
|
|
2357
|
+
// attempt 2's internal 5ms
|
|
2358
|
+
await jest.advanceTimersByTimeAsync(5);
|
|
2359
|
+
|
|
2360
|
+
await expect(promise).resolves.toBe(true);
|
|
2361
|
+
expect(fn).toHaveBeenCalledTimes(2);
|
|
2362
|
+
});
|
|
2363
|
+
});
|
|
2364
|
+
|
|
2236
2365
|
function mockRect(el: HTMLElement, rect: Partial<DOMRect>): void {
|
|
2237
2366
|
jest.spyOn(el, "getBoundingClientRect").mockReturnValue({
|
|
2238
2367
|
x: 0,
|