@fast-china/utils
Version:
Fast 工具库.
1 lines • 1.73 kB
Source Map (JSON)
{"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":["state","reactive","cacheKey","deviceId","uuidRegExp","makeIdentity","deviceID","test","Local","set","get","stringUtil","generateUUID","useIdentity"],"mappings":"6HAIA,MAAMA,EAAQC,EAAS,CACtBC,SAAU,cACVC,SAAU,KAGLC,EAAa,kEAObC,EAAgBC,IACrBA,IAAaN,EAAMG,SAEfG,GAAYF,EAAWG,KAAKD,IAC/BE,EAAMC,IAAIT,EAAME,SAAUI,GAC1BN,EAAMG,SAAWG,EACVN,EAAMG,WAGdG,EAAWE,EAAME,IAAIV,EAAME,YACXE,EAAWG,KAAKD,IAC/BN,EAAMG,SAAWG,EACVA,IAERA,EAAWK,EAAWC,eACtBJ,EAAMC,IAAIT,EAAME,SAAUI,GAC1BN,EAAMG,SAAWG,EACVA,IAGKO,EAAc,KACnB,IACHb,EACHK"}