@w3ux/utils 2.1.0 → 2.2.1

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/index.cjs CHANGED
@@ -457,3 +457,4 @@ var mergeDeep = (target, ...sources) => {
457
457
  /* @license Copyright 2024 w3ux authors & contributors
458
458
  SPDX-License-Identifier: GPL-3.0-only */
459
459
  // /* @license Copyright 2024 w3ux authors & contributors
460
+ //# sourceMappingURL=index.cjs.map
package/index.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/base.ts","../src/convert.ts","../src/unit.ts"],"sourcesContent":["/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nexport * from './base'\nexport * from './convert'\nexport * from './unit'\n","/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { encodeAddress } from 'dedot/utils'\n\n/**\n * Ensures a number has at least the specified number of decimal places, retaining commas in the output if they are present in the input.\n *\n * @function minDecimalPlaces\n * @param {string | number | BigInt} val - The input number, which can be a `string` with or without commas, a `number`, or a `BigInt`.\n * @param {number} minDecimals - The minimum number of decimal places to enforce.\n * @returns {string} The formatted number as a string, padded with zeros if needed to meet `minDecimals`, retaining commas if originally provided.\n * If `val` is invalid, returns \"0\".\n * @example\n * // Pads \"1,234.5\" to have at least 3 decimal places, with commas\n * minDecimalPlaces(\"1,234.5\", 3); // returns \"1,234.500\"\n *\n * // Returns \"1234.56\" unchanged\n * minDecimalPlaces(1234.56, 2); // returns \"1234.56\"\n *\n * // Pads BigInt 1234 with 2 decimals\n * minDecimalPlaces(BigInt(1234), 2); // returns \"1234.00\"\n */\nexport const minDecimalPlaces = (\n val: string | number | bigint,\n minDecimals: number\n): string => {\n try {\n // Determine if we should retain commas based on original input type\n const retainCommas = typeof val === 'string' && val.includes(',')\n\n // Convert `val` to a plain string for processing\n const strVal =\n typeof val === 'string' ? val.replace(/,/g, '') : val.toString()\n\n // Separate integer and decimal parts\n const [integerPart, fractionalPart = ''] = strVal.split('.')\n\n // Parse the integer part as a BigInt\n const whole = BigInt(integerPart || '0')\n\n // Calculate missing decimal places\n const missingDecimals = minDecimals - fractionalPart.length\n\n // Format the integer part back with commas only if the input had commas\n const formattedWhole = retainCommas\n ? Intl.NumberFormat('en-US').format(whole)\n : whole.toString()\n\n // If missing decimals are needed, pad with zeros; otherwise, return the original value\n return missingDecimals > 0\n ? `${formattedWhole}.${fractionalPart}${'0'.repeat(missingDecimals)}`\n : `${formattedWhole}.${fractionalPart}`\n } catch (e) {\n // The provided value is not a valid number, return \"0\".\n return '0'\n }\n}\n\n/**\n * @name camelize\n * @summary Converts a string of text to camelCase.\n */\nexport const camelize = (str: string) => {\n const convertToString = (string: string) => {\n if (string) {\n if (typeof string === 'string') {\n return string\n }\n return String(string)\n }\n return ''\n }\n\n const toWords = (inp: string) =>\n convertToString(inp).match(\n /[A-Z\\xC0-\\xD6\\xD8-\\xDE]?[a-z\\xDF-\\xF6\\xF8-\\xFF]+|[A-Z\\xC0-\\xD6\\xD8-\\xDE]+(?![a-z\\xDF-\\xF6\\xF8-\\xFF])|\\d+/g\n )\n\n const simpleCamelCase = (inp: string[]) => {\n let result = ''\n for (let i = 0; i < inp?.length; i++) {\n const currString = inp[i]\n let tmpStr = currString.toLowerCase()\n if (i != 0) {\n tmpStr =\n tmpStr.slice(0, 1).toUpperCase() + tmpStr.slice(1, tmpStr.length)\n }\n result += tmpStr\n }\n return result\n }\n\n const w = toWords(str)?.map((a) => a.toLowerCase())\n return simpleCamelCase(w || [])\n}\n\n/**\n * @name ellipsisFn\n * @summary Receives an address and creates ellipsis on the given string, based on parameters.\n * @param str - The string to apply the ellipsis on\n * @param amount - The amount of characters that the ellipsis will be\n * @param position - where the ellipsis will apply; if center the amount of character is the\n * same for beginning and end; if \"start\" or \"end\" then its only once the amount; defaults to \"start\"\n */\nexport const ellipsisFn = (\n str: string,\n amount = 6,\n position: 'start' | 'end' | 'center' = 'center'\n) => {\n const half = str.length / 2\n\n // having an amount less than 4 is a bit extreme so we default there\n if (amount <= 4) {\n if (position === 'center') {\n return str.slice(0, 4) + '...' + str.slice(-4)\n }\n if (position === 'end') {\n return str.slice(0, 4) + '...'\n }\n return '...' + str.slice(-4)\n }\n // if the amount requested is in a \"logical\" amount - meaning that it can display the address\n // without repeating the same information twice - then go for it;\n if (position === 'center') {\n return amount >= (str.length - 2) / 2\n ? str.slice(0, half - 3) + '...' + str.slice(-(half - 3))\n : str.slice(0, amount) + '...' + str.slice(-amount)\n }\n // else, the user has been mistaskenly extreme, so just show the maximum possible amount\n if (amount >= str.length) {\n if (position === 'end') {\n return str.slice(0, str.length - 3) + '...'\n }\n return '...' + str.slice(-(str.length - 3))\n } else {\n if (position === 'end') {\n return str.slice(0, amount) + '...'\n }\n return '...' + str.slice(amount)\n }\n}\n\n/**\n * @name pageFromUri\n * @summary Use url variables to load the default components upon the first page visit.\n */\nexport const pageFromUri = (pathname: string, fallback: string) => {\n const lastUriItem = pathname.substring(pathname.lastIndexOf('/') + 1)\n const page = lastUriItem.trim() === '' ? fallback : lastUriItem\n return page.trim()\n}\n\n/**\n * @name rmCommas\n * @summary Removes the commas from a string.\n */\nexport const rmCommas = (val: string): string => val.replace(/,/g, '')\n\n/**\n * @name rmDecimals\n * @summary Removes the decimal point and decimals from a string.\n */\nexport const rmDecimals = (str: string) => str.split('.')[0]\n\n/**\n * @name shuffle\n * @summary Shuffle a set of objects.\n */\nexport const shuffle = <T>(array: T[]) => {\n let currentIndex = array.length\n let randomIndex\n while (currentIndex !== 0) {\n randomIndex = Math.floor(Math.random() * currentIndex)\n currentIndex--\n ;[array[currentIndex], array[randomIndex]] = [\n array[randomIndex],\n array[currentIndex],\n ]\n }\n return array\n}\n\n/**\n * @name withTimeout\n * @summary Timeout a promise after a specified number of milliseconds.\n */\nexport const withTimeout = (\n ms: number,\n promise: Promise<unknown>,\n options?: {\n onTimeout?: () => void\n }\n) => {\n const timeout = new Promise((resolve) =>\n setTimeout(async () => {\n if (typeof options?.onTimeout === 'function') {\n options.onTimeout()\n }\n resolve(undefined)\n }, ms)\n )\n return Promise.race([promise, timeout])\n}\n\n/**\n * @name withTimeoutThrow\n * @summary Timeout a promise after a specified number of milliseconds by throwing an error\n */\nexport const withTimeoutThrow = <T>(\n ms: number,\n promise: Promise<T>,\n options?: {\n onTimeout?: () => void\n }\n) => {\n const timeout = new Promise((reject) =>\n setTimeout(async () => {\n if (typeof options?.onTimeout === 'function') {\n options.onTimeout()\n }\n reject('Function timeout')\n }, ms)\n )\n return Promise.race([promise, timeout])\n}\n\n/**\n * @name appendOrEmpty\n * @summary Returns ` value` if a condition is truthy, or an empty string otherwise.\n */\nexport const appendOrEmpty = (\n condition: boolean | string | undefined,\n value: string\n) => (condition ? ` ${value}` : '')\n\n/**\n * @name appendOr\n * @summary Returns ` value` if condition is truthy, or ` fallback` otherwise.\n */\nexport const appendOr = (\n condition: boolean | string | undefined,\n value: string,\n fallback: string\n) => (condition ? ` ${value}` : ` ${fallback}`)\n\n/**\n * @name formatAccountSs58\n * @summary Formats an address with the supplied ss58 prefix, or returns null if invalid.\n */\nexport const formatAccountSs58 = (\n address: string,\n ss58Prefix: number\n): string | null => {\n try {\n return encodeAddress(address, ss58Prefix)\n } catch (e) {\n return null\n }\n}\n\n/**\n * @name removeHexPrefix\n * @summary Takes a string str as input and returns a new string with the \"0x\" prefix removed if it\n * exists at the beginning of the input string.\n */\nexport const removeHexPrefix = (str: string): string => str.replace(/^0x/, '')\n\n// Check if 2 sets contain the same elements.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const eqSet = (xs: Set<any>, ys: Set<any>) =>\n xs.size === ys.size && [...xs].every((x) => ys.has(x))\n\n// Check if one set contains all the elements of another set.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isSuperset = (set: Set<any>, subset: Set<any>) => {\n for (const elem of subset) {\n if (!set.has(elem)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Finds the maximum value among a list of BigInt values.\n *\n * @function maxBigInt\n * @param {...bigint} values - A list of BigInt values to compare.\n * @returns {bigint} The largest BigInt value in the provided list.\n * @example\n * // Returns the maximum BigInt value\n * maxBigInt(10n, 50n, 30n, 100n, 20n); // 100n\n */\nexport const maxBigInt = (...values: bigint[]): bigint =>\n values.reduce((max, current) => (current > max ? current : max))\n\n/**\n * Finds the minimum value among a list of BigInt values.\n *\n * @function minBigInt\n * @param {...bigint} values - A list of BigInt values to compare.\n * @returns {bigint} The smallest BigInt value in the provided list.\n * @example\n * // Returns the minimum BigInt value\n * minBigInt(10n, 50n, 30n, 100n, 20n); // 10n\n */\nexport const minBigInt = (...values: bigint[]): bigint =>\n values.reduce((min, current) => (current < min ? current : min))\n","// /* @license Copyright 2024 w3ux authors & contributors\n// SPDX-License-Identifier: GPL-3.0-only */\n\n/**\n * Concatenates multiple Uint8Array instances into a single Uint8Array.\n *\n * @param {Uint8Array[]} u8as - An array of Uint8Array instances to concatenate.\n * @returns {Uint8Array} A new Uint8Array containing all the input arrays concatenated.\n */\nexport const u8aConcat = (...u8as: Uint8Array[]): Uint8Array => {\n // Calculate the total length of the resulting Uint8Array\n const totalLength = u8as.reduce((sum, u8a) => sum + u8a.length, 0)\n\n // Create a new Uint8Array with the total length\n const result = new Uint8Array(totalLength)\n\n let offset = 0 // Initialize the offset for placing elements\n for (const u8a of u8as) {\n result.set(u8a, offset) // Set the current Uint8Array at the current offset\n offset += u8a.length // Update the offset for the next Uint8Array\n }\n\n return result\n}\n","/* @license Copyright 2024 w3ux authors & contributors\nSPDX-License-Identifier: GPL-3.0-only */\n\nimport { decodeAddress } from 'dedot/utils'\nimport type { RefObject } from 'react'\nimport { rmCommas, rmDecimals } from './base'\nimport type { AnyObject } from './types'\n\n/**\n * Converts an on-chain balance value from planck to a decimal value in token units.\n *\n * @function planckToUnit\n * @param {number | BigInt | string} val - The balance value in planck. Accepts a `number`, `BigInt`, or `string`.\n * @param {number} units - The number of decimal places in the token unit (10^units planck per 1 token).\n * @returns {string} The equivalent token unit value as a decimal string.\n * @example\n * // Convert 1500000000000 planck to tokens with 12 decimal places\n * planckToUnit(\"1500000000000\", 12); // returns \"1.5\"\n */\nexport const planckToUnit = (\n val: number | bigint | string,\n units: number\n): string => {\n try {\n // Ensure `units` is a positive integer.\n units = Math.max(Math.round(units), 0)\n\n // Convert `val` to BigInt based on its type\n const bigIntVal =\n typeof val === 'bigint'\n ? val\n : BigInt(\n typeof val === 'number'\n ? Math.floor(val).toString()\n : rmDecimals(rmCommas(val))\n )\n\n const divisor = units === 0 ? 1n : BigInt(10) ** BigInt(units)\n\n // Integer division and remainder for the fractional part\n const integerPart = bigIntVal / divisor\n const fractionalPart = bigIntVal % divisor\n\n // Format fractional part with leading zeros to maintain `units` decimal places\n const fractionalStr =\n units > 0 ? `.${fractionalPart.toString().padStart(units, '0')}` : ``\n\n // Combine integer and fractional parts as a decimal string\n return `${integerPart}${fractionalStr}`\n } catch (e) {\n return '0'\n }\n}\n\n/**\n * Converts a token unit value to an integer value in planck.\n *\n * @function unitToPlanck\n * @param {string | number | BigInt} val - The token unit value to convert. Accepts a string, number, or BigInt.\n * @param {number} units - The number of decimal places for conversion (10^units planck per 1 token).\n * @returns {BigInt} The equivalent value in planck as a BigInt.\n * @example\n * // Convert \"1.5\" tokens to planck with 12 decimal places\n * unitToPlanck(\"1.5\", 12); // returns BigInt(\"1500000000000\")\n */\nexport const unitToPlanck = (\n val: string | number | bigint,\n units: number\n): bigint => {\n try {\n // Ensure `units` is a positive integer.\n units = Math.max(Math.round(units), 0)\n\n // Convert `val` to a string; if empty or invalid, default to \"0\"\n const strVal =\n (typeof val === 'string' ? rmCommas(val) : val.toString()) || '0'\n\n // Split into integer and fractional parts\n const [integerPart, fractionalPart = ''] = strVal.split('.')\n\n // Process the integer part by converting to BigInt and scaling it to the given units\n let bigIntValue = BigInt(integerPart) * BigInt(10) ** BigInt(units)\n\n // Process the fractional part if it exists\n if (fractionalPart) {\n let fractionalValue: bigint\n\n if (fractionalPart.length > units) {\n // If fractional part exceeds units, truncate it\n fractionalValue = BigInt(fractionalPart.slice(0, units))\n } else {\n // Otherwise, pad the fractional part to match units\n fractionalValue = BigInt(fractionalPart.padEnd(units, '0'))\n }\n\n bigIntValue += fractionalValue\n }\n\n return bigIntValue\n } catch (e) {\n return BigInt(0)\n }\n}\n\n/**\n * @name remToUnit\n * @summary Converts a rem string to a number.\n */\nexport const remToUnit = (rem: string) =>\n Number(rem.slice(0, rem.length - 3)) *\n parseFloat(getComputedStyle(document.documentElement).fontSize)\n\n/**\n * @name capitalizeFirstLetter\n * @summary Capitalize the first letter of a string.\n */\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\n/**\n * @name snakeToCamel\n * @summary converts a string from snake / kebab-case to camel-case.\n */\nexport const snakeToCamel = (str: string) =>\n str\n .toLowerCase()\n .replace(/([-_][a-z])/g, (group) =>\n group.toUpperCase().replace('-', '').replace('_', '')\n )\n\n/**\n * @name setStateWithRef\n * @summary Synchronize React state and its reference with the provided value.\n */\nexport const setStateWithRef = <T>(\n value: T,\n setState: (_state: T) => void,\n ref: RefObject<T>\n): void => {\n setState(value)\n ref.current = value\n}\n\n/**\n * @name localStorageOrDefault\n * @summary Retrieve the local stroage value with the key, return defult value if it is not\n * found.\n */\nexport const localStorageOrDefault = <T>(\n key: string,\n _default: T,\n parse = false\n): T | string => {\n const val: string | null = localStorage.getItem(key)\n\n if (val === null) {\n return _default\n }\n\n if (parse) {\n return JSON.parse(val) as T\n }\n return val\n}\n\n/**\n * @name isValidAddress\n * @summary Return whether an address is valid Substrate address.\n */\nexport const isValidAddress = (address: string): boolean => {\n try {\n decodeAddress(address)\n return true\n } catch (e) {\n return false\n }\n}\n\n/**\n * @name extractUrlValue\n * @summary Extracts a URL value from a URL string.\n */\nexport const extractUrlValue = (key: string, url?: string) => {\n if (typeof url === 'undefined') {\n url = window.location.href\n }\n const match = url.match(`[?&]${key}=([^&]+)`)\n return match ? match[1] : null\n}\n\n/**\n * @name varToUrlHash\n * @summary Puts a variable into the URL hash as a param.\n * @description\n * Since url variables are added to the hash and are not treated as URL params, the params are split\n * and parsed into a `URLSearchParams`.\n */\nexport const varToUrlHash = (\n key: string,\n val: string,\n addIfMissing: boolean\n) => {\n const hash = window.location.hash\n const [page, params] = hash.split('?')\n const searchParams = new URLSearchParams(params)\n\n if (searchParams.get(key) === null && !addIfMissing) {\n return\n }\n searchParams.set(key, val)\n window.location.hash = `${page}?${searchParams.toString()}`\n}\n\n/**\n * @name removeVarFromUrlHash\n * @summary\n * Removes a variable `key` from the URL hash if it exists. Removes dangling `?` if no URL variables\n * exist.\n */\nexport const removeVarFromUrlHash = (key: string) => {\n const hash = window.location.hash\n const [page, params] = hash.split('?')\n const searchParams = new URLSearchParams(params)\n if (searchParams.get(key) === null) {\n return\n }\n searchParams.delete(key)\n const paramsAsStr = searchParams.toString()\n window.location.hash = `${page}${paramsAsStr ? `?${paramsAsStr}` : ``}`\n}\n\n/**\n * @name sortWithNull\n * @summary Sorts an array with nulls last.\n */\nexport const sortWithNull =\n (ascending: boolean) => (a: unknown, b: unknown) => {\n // if both items are undefined, treat them as equal\n if (typeof a === 'undefined' && typeof b === 'undefined') {\n return 0\n }\n // if either item is undefined, sort it last\n if (typeof a === 'undefined' || typeof b === 'undefined') {\n return typeof a === 'undefined' ? 1 : -1\n }\n // equal items sort equally\n if (a === b) {\n return 0\n }\n // nulls sort after anything else\n if (a === null) {\n return 1\n }\n if (b === null) {\n return -1\n }\n // otherwise, if we're ascending, lowest sorts first\n if (ascending) {\n return a < b ? -1 : 1\n }\n // if descending, highest sorts first\n return a < b ? 1 : -1\n }\n\n/**\n * @name applyWidthAsPadding\n * @summary Applies width of subject to paddingRight of container.\n */\nexport const applyWidthAsPadding = (\n subjectRef: RefObject<HTMLDivElement | null>,\n containerRef: RefObject<HTMLDivElement | null>\n) => {\n if (containerRef.current && subjectRef.current) {\n containerRef.current.style.paddingRight = `${\n subjectRef.current.offsetWidth + remToUnit('1rem')\n }px`\n }\n}\n\n/**\n * @name unescape\n * @summary Replaces \\” with “\n */\nexport const unescape = (val: string) => val.replace(/\\\\\"/g, '\"')\n\n/**\n * @name inChrome\n * @summary Whether the application is rendering in Chrome.\n */\nexport const inChrome = () => {\n const isChromium = (window as Window & { chrome?: boolean })?.chrome || null\n const winNav = (window as Window)?.navigator || null\n const isOpera =\n typeof (window as Window & { opr?: boolean })?.opr !== 'undefined'\n const isIEedge = winNav?.userAgent.indexOf('Edg') > -1 || false\n const isIOSChrome = winNav?.userAgent.match('CriOS') || false\n\n if (isIOSChrome) {\n return true\n }\n if (\n isChromium !== null &&\n typeof isChromium !== 'undefined' &&\n isOpera === false &&\n isIEedge === false\n ) {\n return true\n }\n return false\n}\n\n/**\n * @name addedTo\n * @summary Given 2 objects and some keys, return items in the fresh object that do not exist in the\n * stale object by matching the given common key values of both objects.\n */\nexport const addedTo = (\n fresh: AnyObject[],\n stale: AnyObject[],\n keys: string[]\n): AnyObject[] =>\n typeof fresh !== 'object' || typeof stale !== 'object' || !keys.length\n ? []\n : fresh.filter(\n (freshItem) =>\n !stale.find((staleItem) =>\n keys.every((key) =>\n !(key in staleItem) || !(key in freshItem)\n ? false\n : staleItem[key] === freshItem[key]\n )\n )\n )\n\n/**\n * @name removedFrom\n * @summary Given 2 objects and some keys, return items in the stale object that do not exist in the\n * fresh object by matching the given common key values of both objects.\n */\nexport const removedFrom = (\n fresh: AnyObject[],\n stale: AnyObject[],\n keys: string[]\n): AnyObject[] =>\n typeof fresh !== 'object' || typeof stale !== 'object' || !keys.length\n ? []\n : stale.filter(\n (staleItem) =>\n !fresh.find((freshItem) =>\n keys.every((key) =>\n !(key in staleItem) || !(key in freshItem)\n ? false\n : freshItem[key] === staleItem[key]\n )\n )\n )\n\n/**\n * @name matchedProperties\n * @summary Given 2 objects and some keys, return items in object 1 that also exist in object 2 by\n * matching the given common key values of both objects.\n */\nexport const matchedProperties = (\n objX: AnyObject[],\n objY: AnyObject[],\n keys: string[]\n): AnyObject[] =>\n typeof objX !== 'object' || typeof objY !== 'object' || !keys.length\n ? []\n : objY.filter((x) =>\n objX.find((y) =>\n keys.every((key) =>\n !(key in x) || !(key in y) ? false : y[key] === x[key]\n )\n )\n )\n\n/**\n * @name isValidHttpUrl\n * @summary Give a string, return whether it is a valid http URL.\n * @param string - The string to check.\n */\nexport const isValidHttpUrl = (string: string) => {\n let url: URL\n try {\n url = new URL(string)\n } catch (_) {\n return false\n }\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\n/**\n * @name makeCancelable\n * @summary Makes a promise cancellable.\n * @param promise - The promise to make cancellable.\n */\nexport const makeCancelable = (promise: Promise<AnyObject>) => {\n let hasCanceled = false\n\n const wrappedPromise = new Promise((resolve, reject) => {\n promise.then((val) =>\n hasCanceled ? reject(Error('Cancelled')) : resolve(val)\n )\n promise.catch((error) =>\n hasCanceled ? reject(Error('Cancelled')) : reject(error)\n )\n })\n\n return {\n promise: wrappedPromise,\n cancel: () => {\n hasCanceled = true\n },\n }\n}\n\n/**\n * @name unimplemented\n * @summary A placeholder function to signal a deliberate unimplementation.\n * Consumes an arbitrary number of props.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport const unimplemented = ({ ...props }) => {\n /* unimplemented */\n}\n\n/**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\n\nexport const mergeDeep = (\n target: AnyObject,\n ...sources: AnyObject[]\n): AnyObject => {\n if (!sources.length) {\n return target\n }\n\n const isObject = (item: AnyObject) =>\n item && typeof item === 'object' && !Array.isArray(item)\n const source = sources.shift()\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} })\n }\n mergeDeep(target[key], source[key])\n } else {\n Object.assign(target, { [key]: source[key] })\n }\n }\n }\n return mergeDeep(target, ...sources)\n}\n"],"mappings":"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","names":["import_utils"]}
package/index.d.cts CHANGED
@@ -1,5 +1,269 @@
1
- export { appendOr, appendOrEmpty, camelize, ellipsisFn, eqSet, formatAccountSs58, isSuperset, maxBigInt, minBigInt, minDecimalPlaces, pageFromUri, removeHexPrefix, rmCommas, rmDecimals, shuffle, withTimeout, withTimeoutThrow } from './base.cjs';
2
- export { u8aConcat } from './convert.cjs';
3
- export { addedTo, applyWidthAsPadding, capitalizeFirstLetter, extractUrlValue, inChrome, isValidAddress, isValidHttpUrl, localStorageOrDefault, makeCancelable, matchedProperties, mergeDeep, planckToUnit, remToUnit, removeVarFromUrlHash, removedFrom, setStateWithRef, snakeToCamel, sortWithNull, unescape, unimplemented, unitToPlanck, varToUrlHash } from './unit.cjs';
4
- import 'react';
5
- import './types.cjs';
1
+ import { RefObject } from 'react';
2
+
3
+ /**
4
+ * Ensures a number has at least the specified number of decimal places, retaining commas in the output if they are present in the input.
5
+ *
6
+ * @function minDecimalPlaces
7
+ * @param {string | number | BigInt} val - The input number, which can be a `string` with or without commas, a `number`, or a `BigInt`.
8
+ * @param {number} minDecimals - The minimum number of decimal places to enforce.
9
+ * @returns {string} The formatted number as a string, padded with zeros if needed to meet `minDecimals`, retaining commas if originally provided.
10
+ * If `val` is invalid, returns "0".
11
+ * @example
12
+ * // Pads "1,234.5" to have at least 3 decimal places, with commas
13
+ * minDecimalPlaces("1,234.5", 3); // returns "1,234.500"
14
+ *
15
+ * // Returns "1234.56" unchanged
16
+ * minDecimalPlaces(1234.56, 2); // returns "1234.56"
17
+ *
18
+ * // Pads BigInt 1234 with 2 decimals
19
+ * minDecimalPlaces(BigInt(1234), 2); // returns "1234.00"
20
+ */
21
+ declare const minDecimalPlaces: (val: string | number | bigint, minDecimals: number) => string;
22
+ /**
23
+ * @name camelize
24
+ * @summary Converts a string of text to camelCase.
25
+ */
26
+ declare const camelize: (str: string) => string;
27
+ /**
28
+ * @name ellipsisFn
29
+ * @summary Receives an address and creates ellipsis on the given string, based on parameters.
30
+ * @param str - The string to apply the ellipsis on
31
+ * @param amount - The amount of characters that the ellipsis will be
32
+ * @param position - where the ellipsis will apply; if center the amount of character is the
33
+ * same for beginning and end; if "start" or "end" then its only once the amount; defaults to "start"
34
+ */
35
+ declare const ellipsisFn: (str: string, amount?: number, position?: "start" | "end" | "center") => string;
36
+ /**
37
+ * @name pageFromUri
38
+ * @summary Use url variables to load the default components upon the first page visit.
39
+ */
40
+ declare const pageFromUri: (pathname: string, fallback: string) => string;
41
+ /**
42
+ * @name rmCommas
43
+ * @summary Removes the commas from a string.
44
+ */
45
+ declare const rmCommas: (val: string) => string;
46
+ /**
47
+ * @name rmDecimals
48
+ * @summary Removes the decimal point and decimals from a string.
49
+ */
50
+ declare const rmDecimals: (str: string) => string;
51
+ /**
52
+ * @name shuffle
53
+ * @summary Shuffle a set of objects.
54
+ */
55
+ declare const shuffle: <T>(array: T[]) => T[];
56
+ /**
57
+ * @name withTimeout
58
+ * @summary Timeout a promise after a specified number of milliseconds.
59
+ */
60
+ declare const withTimeout: (ms: number, promise: Promise<unknown>, options?: {
61
+ onTimeout?: () => void;
62
+ }) => Promise<unknown>;
63
+ /**
64
+ * @name withTimeoutThrow
65
+ * @summary Timeout a promise after a specified number of milliseconds by throwing an error
66
+ */
67
+ declare const withTimeoutThrow: <T>(ms: number, promise: Promise<T>, options?: {
68
+ onTimeout?: () => void;
69
+ }) => Promise<unknown>;
70
+ /**
71
+ * @name appendOrEmpty
72
+ * @summary Returns ` value` if a condition is truthy, or an empty string otherwise.
73
+ */
74
+ declare const appendOrEmpty: (condition: boolean | string | undefined, value: string) => string;
75
+ /**
76
+ * @name appendOr
77
+ * @summary Returns ` value` if condition is truthy, or ` fallback` otherwise.
78
+ */
79
+ declare const appendOr: (condition: boolean | string | undefined, value: string, fallback: string) => string;
80
+ /**
81
+ * @name formatAccountSs58
82
+ * @summary Formats an address with the supplied ss58 prefix, or returns null if invalid.
83
+ */
84
+ declare const formatAccountSs58: (address: string, ss58Prefix: number) => string | null;
85
+ /**
86
+ * @name removeHexPrefix
87
+ * @summary Takes a string str as input and returns a new string with the "0x" prefix removed if it
88
+ * exists at the beginning of the input string.
89
+ */
90
+ declare const removeHexPrefix: (str: string) => string;
91
+ declare const eqSet: (xs: Set<any>, ys: Set<any>) => boolean;
92
+ declare const isSuperset: (set: Set<any>, subset: Set<any>) => boolean;
93
+ /**
94
+ * Finds the maximum value among a list of BigInt values.
95
+ *
96
+ * @function maxBigInt
97
+ * @param {...bigint} values - A list of BigInt values to compare.
98
+ * @returns {bigint} The largest BigInt value in the provided list.
99
+ * @example
100
+ * // Returns the maximum BigInt value
101
+ * maxBigInt(10n, 50n, 30n, 100n, 20n); // 100n
102
+ */
103
+ declare const maxBigInt: (...values: bigint[]) => bigint;
104
+ /**
105
+ * Finds the minimum value among a list of BigInt values.
106
+ *
107
+ * @function minBigInt
108
+ * @param {...bigint} values - A list of BigInt values to compare.
109
+ * @returns {bigint} The smallest BigInt value in the provided list.
110
+ * @example
111
+ * // Returns the minimum BigInt value
112
+ * minBigInt(10n, 50n, 30n, 100n, 20n); // 10n
113
+ */
114
+ declare const minBigInt: (...values: bigint[]) => bigint;
115
+
116
+ /**
117
+ * Concatenates multiple Uint8Array instances into a single Uint8Array.
118
+ *
119
+ * @param {Uint8Array[]} u8as - An array of Uint8Array instances to concatenate.
120
+ * @returns {Uint8Array} A new Uint8Array containing all the input arrays concatenated.
121
+ */
122
+ declare const u8aConcat: (...u8as: Uint8Array[]) => Uint8Array;
123
+
124
+ type AnyObject = any;
125
+
126
+ /**
127
+ * Converts an on-chain balance value from planck to a decimal value in token units.
128
+ *
129
+ * @function planckToUnit
130
+ * @param {number | BigInt | string} val - The balance value in planck. Accepts a `number`, `BigInt`, or `string`.
131
+ * @param {number} units - The number of decimal places in the token unit (10^units planck per 1 token).
132
+ * @returns {string} The equivalent token unit value as a decimal string.
133
+ * @example
134
+ * // Convert 1500000000000 planck to tokens with 12 decimal places
135
+ * planckToUnit("1500000000000", 12); // returns "1.5"
136
+ */
137
+ declare const planckToUnit: (val: number | bigint | string, units: number) => string;
138
+ /**
139
+ * Converts a token unit value to an integer value in planck.
140
+ *
141
+ * @function unitToPlanck
142
+ * @param {string | number | BigInt} val - The token unit value to convert. Accepts a string, number, or BigInt.
143
+ * @param {number} units - The number of decimal places for conversion (10^units planck per 1 token).
144
+ * @returns {BigInt} The equivalent value in planck as a BigInt.
145
+ * @example
146
+ * // Convert "1.5" tokens to planck with 12 decimal places
147
+ * unitToPlanck("1.5", 12); // returns BigInt("1500000000000")
148
+ */
149
+ declare const unitToPlanck: (val: string | number | bigint, units: number) => bigint;
150
+ /**
151
+ * @name remToUnit
152
+ * @summary Converts a rem string to a number.
153
+ */
154
+ declare const remToUnit: (rem: string) => number;
155
+ /**
156
+ * @name capitalizeFirstLetter
157
+ * @summary Capitalize the first letter of a string.
158
+ */
159
+ declare const capitalizeFirstLetter: (string: string) => string;
160
+ /**
161
+ * @name snakeToCamel
162
+ * @summary converts a string from snake / kebab-case to camel-case.
163
+ */
164
+ declare const snakeToCamel: (str: string) => string;
165
+ /**
166
+ * @name setStateWithRef
167
+ * @summary Synchronize React state and its reference with the provided value.
168
+ */
169
+ declare const setStateWithRef: <T>(value: T, setState: (_state: T) => void, ref: RefObject<T>) => void;
170
+ /**
171
+ * @name localStorageOrDefault
172
+ * @summary Retrieve the local stroage value with the key, return defult value if it is not
173
+ * found.
174
+ */
175
+ declare const localStorageOrDefault: <T>(key: string, _default: T, parse?: boolean) => T | string;
176
+ /**
177
+ * @name isValidAddress
178
+ * @summary Return whether an address is valid Substrate address.
179
+ */
180
+ declare const isValidAddress: (address: string) => boolean;
181
+ /**
182
+ * @name extractUrlValue
183
+ * @summary Extracts a URL value from a URL string.
184
+ */
185
+ declare const extractUrlValue: (key: string, url?: string) => string | null;
186
+ /**
187
+ * @name varToUrlHash
188
+ * @summary Puts a variable into the URL hash as a param.
189
+ * @description
190
+ * Since url variables are added to the hash and are not treated as URL params, the params are split
191
+ * and parsed into a `URLSearchParams`.
192
+ */
193
+ declare const varToUrlHash: (key: string, val: string, addIfMissing: boolean) => void;
194
+ /**
195
+ * @name removeVarFromUrlHash
196
+ * @summary
197
+ * Removes a variable `key` from the URL hash if it exists. Removes dangling `?` if no URL variables
198
+ * exist.
199
+ */
200
+ declare const removeVarFromUrlHash: (key: string) => void;
201
+ /**
202
+ * @name sortWithNull
203
+ * @summary Sorts an array with nulls last.
204
+ */
205
+ declare const sortWithNull: (ascending: boolean) => (a: unknown, b: unknown) => 0 | 1 | -1;
206
+ /**
207
+ * @name applyWidthAsPadding
208
+ * @summary Applies width of subject to paddingRight of container.
209
+ */
210
+ declare const applyWidthAsPadding: (subjectRef: RefObject<HTMLDivElement | null>, containerRef: RefObject<HTMLDivElement | null>) => void;
211
+ /**
212
+ * @name unescape
213
+ * @summary Replaces \” with “
214
+ */
215
+ declare const unescape: (val: string) => string;
216
+ /**
217
+ * @name inChrome
218
+ * @summary Whether the application is rendering in Chrome.
219
+ */
220
+ declare const inChrome: () => boolean;
221
+ /**
222
+ * @name addedTo
223
+ * @summary Given 2 objects and some keys, return items in the fresh object that do not exist in the
224
+ * stale object by matching the given common key values of both objects.
225
+ */
226
+ declare const addedTo: (fresh: AnyObject[], stale: AnyObject[], keys: string[]) => AnyObject[];
227
+ /**
228
+ * @name removedFrom
229
+ * @summary Given 2 objects and some keys, return items in the stale object that do not exist in the
230
+ * fresh object by matching the given common key values of both objects.
231
+ */
232
+ declare const removedFrom: (fresh: AnyObject[], stale: AnyObject[], keys: string[]) => AnyObject[];
233
+ /**
234
+ * @name matchedProperties
235
+ * @summary Given 2 objects and some keys, return items in object 1 that also exist in object 2 by
236
+ * matching the given common key values of both objects.
237
+ */
238
+ declare const matchedProperties: (objX: AnyObject[], objY: AnyObject[], keys: string[]) => AnyObject[];
239
+ /**
240
+ * @name isValidHttpUrl
241
+ * @summary Give a string, return whether it is a valid http URL.
242
+ * @param string - The string to check.
243
+ */
244
+ declare const isValidHttpUrl: (string: string) => boolean;
245
+ /**
246
+ * @name makeCancelable
247
+ * @summary Makes a promise cancellable.
248
+ * @param promise - The promise to make cancellable.
249
+ */
250
+ declare const makeCancelable: (promise: Promise<AnyObject>) => {
251
+ promise: Promise<unknown>;
252
+ cancel: () => void;
253
+ };
254
+ /**
255
+ * @name unimplemented
256
+ * @summary A placeholder function to signal a deliberate unimplementation.
257
+ * Consumes an arbitrary number of props.
258
+ */
259
+ declare const unimplemented: ({ ...props }: {
260
+ [x: string]: any;
261
+ }) => void;
262
+ /**
263
+ * Deep merge two objects.
264
+ * @param target
265
+ * @param ...sources
266
+ */
267
+ declare const mergeDeep: (target: AnyObject, ...sources: AnyObject[]) => AnyObject;
268
+
269
+ export { addedTo, appendOr, appendOrEmpty, applyWidthAsPadding, camelize, capitalizeFirstLetter, ellipsisFn, eqSet, extractUrlValue, formatAccountSs58, inChrome, isSuperset, isValidAddress, isValidHttpUrl, localStorageOrDefault, makeCancelable, matchedProperties, maxBigInt, mergeDeep, minBigInt, minDecimalPlaces, pageFromUri, planckToUnit, remToUnit, removeHexPrefix, removeVarFromUrlHash, removedFrom, rmCommas, rmDecimals, setStateWithRef, shuffle, snakeToCamel, sortWithNull, u8aConcat, unescape, unimplemented, unitToPlanck, varToUrlHash, withTimeout, withTimeoutThrow };
package/index.d.ts CHANGED
@@ -1,5 +1,269 @@
1
- export { appendOr, appendOrEmpty, camelize, ellipsisFn, eqSet, formatAccountSs58, isSuperset, maxBigInt, minBigInt, minDecimalPlaces, pageFromUri, removeHexPrefix, rmCommas, rmDecimals, shuffle, withTimeout, withTimeoutThrow } from './base.js';
2
- export { u8aConcat } from './convert.js';
3
- export { addedTo, applyWidthAsPadding, capitalizeFirstLetter, extractUrlValue, inChrome, isValidAddress, isValidHttpUrl, localStorageOrDefault, makeCancelable, matchedProperties, mergeDeep, planckToUnit, remToUnit, removeVarFromUrlHash, removedFrom, setStateWithRef, snakeToCamel, sortWithNull, unescape, unimplemented, unitToPlanck, varToUrlHash } from './unit.js';
4
- import 'react';
5
- import './types.js';
1
+ import { RefObject } from 'react';
2
+
3
+ /**
4
+ * Ensures a number has at least the specified number of decimal places, retaining commas in the output if they are present in the input.
5
+ *
6
+ * @function minDecimalPlaces
7
+ * @param {string | number | BigInt} val - The input number, which can be a `string` with or without commas, a `number`, or a `BigInt`.
8
+ * @param {number} minDecimals - The minimum number of decimal places to enforce.
9
+ * @returns {string} The formatted number as a string, padded with zeros if needed to meet `minDecimals`, retaining commas if originally provided.
10
+ * If `val` is invalid, returns "0".
11
+ * @example
12
+ * // Pads "1,234.5" to have at least 3 decimal places, with commas
13
+ * minDecimalPlaces("1,234.5", 3); // returns "1,234.500"
14
+ *
15
+ * // Returns "1234.56" unchanged
16
+ * minDecimalPlaces(1234.56, 2); // returns "1234.56"
17
+ *
18
+ * // Pads BigInt 1234 with 2 decimals
19
+ * minDecimalPlaces(BigInt(1234), 2); // returns "1234.00"
20
+ */
21
+ declare const minDecimalPlaces: (val: string | number | bigint, minDecimals: number) => string;
22
+ /**
23
+ * @name camelize
24
+ * @summary Converts a string of text to camelCase.
25
+ */
26
+ declare const camelize: (str: string) => string;
27
+ /**
28
+ * @name ellipsisFn
29
+ * @summary Receives an address and creates ellipsis on the given string, based on parameters.
30
+ * @param str - The string to apply the ellipsis on
31
+ * @param amount - The amount of characters that the ellipsis will be
32
+ * @param position - where the ellipsis will apply; if center the amount of character is the
33
+ * same for beginning and end; if "start" or "end" then its only once the amount; defaults to "start"
34
+ */
35
+ declare const ellipsisFn: (str: string, amount?: number, position?: "start" | "end" | "center") => string;
36
+ /**
37
+ * @name pageFromUri
38
+ * @summary Use url variables to load the default components upon the first page visit.
39
+ */
40
+ declare const pageFromUri: (pathname: string, fallback: string) => string;
41
+ /**
42
+ * @name rmCommas
43
+ * @summary Removes the commas from a string.
44
+ */
45
+ declare const rmCommas: (val: string) => string;
46
+ /**
47
+ * @name rmDecimals
48
+ * @summary Removes the decimal point and decimals from a string.
49
+ */
50
+ declare const rmDecimals: (str: string) => string;
51
+ /**
52
+ * @name shuffle
53
+ * @summary Shuffle a set of objects.
54
+ */
55
+ declare const shuffle: <T>(array: T[]) => T[];
56
+ /**
57
+ * @name withTimeout
58
+ * @summary Timeout a promise after a specified number of milliseconds.
59
+ */
60
+ declare const withTimeout: (ms: number, promise: Promise<unknown>, options?: {
61
+ onTimeout?: () => void;
62
+ }) => Promise<unknown>;
63
+ /**
64
+ * @name withTimeoutThrow
65
+ * @summary Timeout a promise after a specified number of milliseconds by throwing an error
66
+ */
67
+ declare const withTimeoutThrow: <T>(ms: number, promise: Promise<T>, options?: {
68
+ onTimeout?: () => void;
69
+ }) => Promise<unknown>;
70
+ /**
71
+ * @name appendOrEmpty
72
+ * @summary Returns ` value` if a condition is truthy, or an empty string otherwise.
73
+ */
74
+ declare const appendOrEmpty: (condition: boolean | string | undefined, value: string) => string;
75
+ /**
76
+ * @name appendOr
77
+ * @summary Returns ` value` if condition is truthy, or ` fallback` otherwise.
78
+ */
79
+ declare const appendOr: (condition: boolean | string | undefined, value: string, fallback: string) => string;
80
+ /**
81
+ * @name formatAccountSs58
82
+ * @summary Formats an address with the supplied ss58 prefix, or returns null if invalid.
83
+ */
84
+ declare const formatAccountSs58: (address: string, ss58Prefix: number) => string | null;
85
+ /**
86
+ * @name removeHexPrefix
87
+ * @summary Takes a string str as input and returns a new string with the "0x" prefix removed if it
88
+ * exists at the beginning of the input string.
89
+ */
90
+ declare const removeHexPrefix: (str: string) => string;
91
+ declare const eqSet: (xs: Set<any>, ys: Set<any>) => boolean;
92
+ declare const isSuperset: (set: Set<any>, subset: Set<any>) => boolean;
93
+ /**
94
+ * Finds the maximum value among a list of BigInt values.
95
+ *
96
+ * @function maxBigInt
97
+ * @param {...bigint} values - A list of BigInt values to compare.
98
+ * @returns {bigint} The largest BigInt value in the provided list.
99
+ * @example
100
+ * // Returns the maximum BigInt value
101
+ * maxBigInt(10n, 50n, 30n, 100n, 20n); // 100n
102
+ */
103
+ declare const maxBigInt: (...values: bigint[]) => bigint;
104
+ /**
105
+ * Finds the minimum value among a list of BigInt values.
106
+ *
107
+ * @function minBigInt
108
+ * @param {...bigint} values - A list of BigInt values to compare.
109
+ * @returns {bigint} The smallest BigInt value in the provided list.
110
+ * @example
111
+ * // Returns the minimum BigInt value
112
+ * minBigInt(10n, 50n, 30n, 100n, 20n); // 10n
113
+ */
114
+ declare const minBigInt: (...values: bigint[]) => bigint;
115
+
116
+ /**
117
+ * Concatenates multiple Uint8Array instances into a single Uint8Array.
118
+ *
119
+ * @param {Uint8Array[]} u8as - An array of Uint8Array instances to concatenate.
120
+ * @returns {Uint8Array} A new Uint8Array containing all the input arrays concatenated.
121
+ */
122
+ declare const u8aConcat: (...u8as: Uint8Array[]) => Uint8Array;
123
+
124
+ type AnyObject = any;
125
+
126
+ /**
127
+ * Converts an on-chain balance value from planck to a decimal value in token units.
128
+ *
129
+ * @function planckToUnit
130
+ * @param {number | BigInt | string} val - The balance value in planck. Accepts a `number`, `BigInt`, or `string`.
131
+ * @param {number} units - The number of decimal places in the token unit (10^units planck per 1 token).
132
+ * @returns {string} The equivalent token unit value as a decimal string.
133
+ * @example
134
+ * // Convert 1500000000000 planck to tokens with 12 decimal places
135
+ * planckToUnit("1500000000000", 12); // returns "1.5"
136
+ */
137
+ declare const planckToUnit: (val: number | bigint | string, units: number) => string;
138
+ /**
139
+ * Converts a token unit value to an integer value in planck.
140
+ *
141
+ * @function unitToPlanck
142
+ * @param {string | number | BigInt} val - The token unit value to convert. Accepts a string, number, or BigInt.
143
+ * @param {number} units - The number of decimal places for conversion (10^units planck per 1 token).
144
+ * @returns {BigInt} The equivalent value in planck as a BigInt.
145
+ * @example
146
+ * // Convert "1.5" tokens to planck with 12 decimal places
147
+ * unitToPlanck("1.5", 12); // returns BigInt("1500000000000")
148
+ */
149
+ declare const unitToPlanck: (val: string | number | bigint, units: number) => bigint;
150
+ /**
151
+ * @name remToUnit
152
+ * @summary Converts a rem string to a number.
153
+ */
154
+ declare const remToUnit: (rem: string) => number;
155
+ /**
156
+ * @name capitalizeFirstLetter
157
+ * @summary Capitalize the first letter of a string.
158
+ */
159
+ declare const capitalizeFirstLetter: (string: string) => string;
160
+ /**
161
+ * @name snakeToCamel
162
+ * @summary converts a string from snake / kebab-case to camel-case.
163
+ */
164
+ declare const snakeToCamel: (str: string) => string;
165
+ /**
166
+ * @name setStateWithRef
167
+ * @summary Synchronize React state and its reference with the provided value.
168
+ */
169
+ declare const setStateWithRef: <T>(value: T, setState: (_state: T) => void, ref: RefObject<T>) => void;
170
+ /**
171
+ * @name localStorageOrDefault
172
+ * @summary Retrieve the local stroage value with the key, return defult value if it is not
173
+ * found.
174
+ */
175
+ declare const localStorageOrDefault: <T>(key: string, _default: T, parse?: boolean) => T | string;
176
+ /**
177
+ * @name isValidAddress
178
+ * @summary Return whether an address is valid Substrate address.
179
+ */
180
+ declare const isValidAddress: (address: string) => boolean;
181
+ /**
182
+ * @name extractUrlValue
183
+ * @summary Extracts a URL value from a URL string.
184
+ */
185
+ declare const extractUrlValue: (key: string, url?: string) => string | null;
186
+ /**
187
+ * @name varToUrlHash
188
+ * @summary Puts a variable into the URL hash as a param.
189
+ * @description
190
+ * Since url variables are added to the hash and are not treated as URL params, the params are split
191
+ * and parsed into a `URLSearchParams`.
192
+ */
193
+ declare const varToUrlHash: (key: string, val: string, addIfMissing: boolean) => void;
194
+ /**
195
+ * @name removeVarFromUrlHash
196
+ * @summary
197
+ * Removes a variable `key` from the URL hash if it exists. Removes dangling `?` if no URL variables
198
+ * exist.
199
+ */
200
+ declare const removeVarFromUrlHash: (key: string) => void;
201
+ /**
202
+ * @name sortWithNull
203
+ * @summary Sorts an array with nulls last.
204
+ */
205
+ declare const sortWithNull: (ascending: boolean) => (a: unknown, b: unknown) => 0 | 1 | -1;
206
+ /**
207
+ * @name applyWidthAsPadding
208
+ * @summary Applies width of subject to paddingRight of container.
209
+ */
210
+ declare const applyWidthAsPadding: (subjectRef: RefObject<HTMLDivElement | null>, containerRef: RefObject<HTMLDivElement | null>) => void;
211
+ /**
212
+ * @name unescape
213
+ * @summary Replaces \” with “
214
+ */
215
+ declare const unescape: (val: string) => string;
216
+ /**
217
+ * @name inChrome
218
+ * @summary Whether the application is rendering in Chrome.
219
+ */
220
+ declare const inChrome: () => boolean;
221
+ /**
222
+ * @name addedTo
223
+ * @summary Given 2 objects and some keys, return items in the fresh object that do not exist in the
224
+ * stale object by matching the given common key values of both objects.
225
+ */
226
+ declare const addedTo: (fresh: AnyObject[], stale: AnyObject[], keys: string[]) => AnyObject[];
227
+ /**
228
+ * @name removedFrom
229
+ * @summary Given 2 objects and some keys, return items in the stale object that do not exist in the
230
+ * fresh object by matching the given common key values of both objects.
231
+ */
232
+ declare const removedFrom: (fresh: AnyObject[], stale: AnyObject[], keys: string[]) => AnyObject[];
233
+ /**
234
+ * @name matchedProperties
235
+ * @summary Given 2 objects and some keys, return items in object 1 that also exist in object 2 by
236
+ * matching the given common key values of both objects.
237
+ */
238
+ declare const matchedProperties: (objX: AnyObject[], objY: AnyObject[], keys: string[]) => AnyObject[];
239
+ /**
240
+ * @name isValidHttpUrl
241
+ * @summary Give a string, return whether it is a valid http URL.
242
+ * @param string - The string to check.
243
+ */
244
+ declare const isValidHttpUrl: (string: string) => boolean;
245
+ /**
246
+ * @name makeCancelable
247
+ * @summary Makes a promise cancellable.
248
+ * @param promise - The promise to make cancellable.
249
+ */
250
+ declare const makeCancelable: (promise: Promise<AnyObject>) => {
251
+ promise: Promise<unknown>;
252
+ cancel: () => void;
253
+ };
254
+ /**
255
+ * @name unimplemented
256
+ * @summary A placeholder function to signal a deliberate unimplementation.
257
+ * Consumes an arbitrary number of props.
258
+ */
259
+ declare const unimplemented: ({ ...props }: {
260
+ [x: string]: any;
261
+ }) => void;
262
+ /**
263
+ * Deep merge two objects.
264
+ * @param target
265
+ * @param ...sources
266
+ */
267
+ declare const mergeDeep: (target: AnyObject, ...sources: AnyObject[]) => AnyObject;
268
+
269
+ export { addedTo, appendOr, appendOrEmpty, applyWidthAsPadding, camelize, capitalizeFirstLetter, ellipsisFn, eqSet, extractUrlValue, formatAccountSs58, inChrome, isSuperset, isValidAddress, isValidHttpUrl, localStorageOrDefault, makeCancelable, matchedProperties, maxBigInt, mergeDeep, minBigInt, minDecimalPlaces, pageFromUri, planckToUnit, remToUnit, removeHexPrefix, removeVarFromUrlHash, removedFrom, rmCommas, rmDecimals, setStateWithRef, shuffle, snakeToCamel, sortWithNull, u8aConcat, unescape, unimplemented, unitToPlanck, varToUrlHash, withTimeout, withTimeoutThrow };
package/index.js CHANGED
@@ -391,3 +391,4 @@ export {
391
391
  /* @license Copyright 2024 w3ux authors & contributors
392
392
  SPDX-License-Identifier: GPL-3.0-only */
393
393
  // /* @license Copyright 2024 w3ux authors & contributors
394
+ //# sourceMappingURL=index.js.map