// Author: fruit.com.cn const DEVICE_KEY = 'ymb.device.id'; function createDeviceId() { const uuid = globalThis.crypto?.randomUUID?.() || `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`; return `d-${uuid}`; } let cachedDeviceId = ''; export function getDeviceId() { if (cachedDeviceId) return cachedDeviceId; try { const stored = window.localStorage.getItem(DEVICE_KEY); cachedDeviceId = stored || createDeviceId(); if (!stored) window.localStorage.setItem(DEVICE_KEY, cachedDeviceId); } catch { cachedDeviceId = createDeviceId(); } return cachedDeviceId; }