UNPKG

@fast-china/utils

Version:

Fast 工具库.

1 lines 1.72 kB
{"version":3,"file":"index.mjs","sources":["../../../../src/identity/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { Local } from \"../storage\";\nimport { stringUtil } from \"../string\";\n\nconst state = reactive({\n\tcacheKey: \"__DEVICE_ID\",\n\tdeviceId: \"\",\n});\n\nconst uuidRegExp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * 生成设备Id\n * @param deviceID 覆盖的设备Id\n * @returns\n */\nconst makeIdentity = (deviceID?: string): string => {\n\tdeviceID ??= state.deviceId;\n\t// 判断是否存在\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tLocal.set(state.cacheKey, deviceID);\n\t\tstate.deviceId = deviceID;\n\t\treturn state.deviceId;\n\t}\n\t// 生成浏览器唯一 UUID\n\tdeviceID = Local.get(state.cacheKey);\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tstate.deviceId = deviceID;\n\t\treturn deviceID;\n\t}\n\tdeviceID = stringUtil.generateUUID();\n\tLocal.set(state.cacheKey, deviceID);\n\tstate.deviceId = deviceID;\n\treturn deviceID;\n};\n\nexport const useIdentity = (): typeof state & { makeIdentity: typeof makeIdentity } => {\n\treturn {\n\t\t...state,\n\t\tmakeIdentity,\n\t};\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,QAAQ,SAAS;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AACX,CAAC;AAED,MAAM,aAAa;AAOnB,MAAM,eAAe,CAAC,aAA8B;AACnD,0BAAa,MAAM;AAEnB,MAAI,YAAY,WAAW,KAAK,QAAQ,GAAG;AACpC,UAAA,IAAI,MAAM,UAAU,QAAQ;AAClC,UAAM,WAAW;AACjB,WAAO,MAAM;AAAA,EAAA;AAGH,aAAA,MAAM,IAAI,MAAM,QAAQ;AACnC,MAAI,YAAY,WAAW,KAAK,QAAQ,GAAG;AAC1C,UAAM,WAAW;AACV,WAAA;AAAA,EAAA;AAER,aAAW,WAAW,aAAa;AAC7B,QAAA,IAAI,MAAM,UAAU,QAAQ;AAClC,QAAM,WAAW;AACV,SAAA;AACR;AAEO,MAAM,cAAc,MAA4D;AAC/E,SAAA;AAAA,IACN,GAAG;AAAA,IACH;AAAA,EACD;AACD;"}