const refMap = new WeakMap() let refCounter = 0 /** * Generates a stable, unique string key for any JS value. * * - null / undefined => 'null' / 'undefined' * - string / number / boolean => `${type}:${value}` (e.g. 'string:hello', 'number:42', * 'boolean:false') * - registered symbols (`Symbol.for('foo')`) => 'symbol:foo' * - objects / functions / non-registered symbols => one-time ID (e.g. 'ref:1', 'ref:2', etc.) * * @param value - Any JavaScript value. * @returns A string that uniquely and consistently identifies the value. */ export function getKey(value: unknown): string { if (value === null) return 'null' if (value === undefined) return 'undefined' if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { return `${typeof value}:${value}` } if (typeof value === 'symbol') { const registryKey = Symbol.keyFor(value) if (registryKey !== undefined) { return `symbol:${registryKey}` } } let id = refMap.get(value) if (!id) { id = `ref:${++refCounter}` refMap.set(value, id) } return id }