UNPKG

@future-widget-lab/ui-keys

Version:

A helper for creating render-friendly keys, useful for uniquely identifying resources, caching, testing, and rendering.

35 lines (29 loc) 688 B
import { stringify } from 'flatted'; /** * @description * Use this helper to generate a structured key from the provided arguments. */ export const createUiKey = (...args: Array<unknown>): string => { const key = args .flatMap((arg) => { return arg; }) .map((arg) => { switch (true) { case typeof arg === 'string': { return arg; } case (typeof arg === 'number' && !Number.isNaN(arg)) || typeof arg === 'boolean': { return arg.toString(); } case Array.isArray(arg) || (typeof arg === 'object' && arg !== null): { return `@${stringify(arg)}`; } default: { return 'unknown'; } } }) .join('::'); return key; };