Spaces:
Running
Running
File size: 1,083 Bytes
f120063 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | const crypto = require('crypto')
const { jwtDecode } = require('jwt-decode')
const { logger } = require('./logger')
const isJson = (str) => {
try {
JSON.parse(str)
return true
} catch (error) {
return false
}
}
const sleep = async (ms) => {
return await new Promise(resolve => setTimeout(resolve, ms))
}
const sha256Encrypt = (text) => {
if (typeof text !== 'string') {
logger.error('输入必须是字符串类型', 'TOOLS')
throw new Error('输入必须是字符串类型')
}
const hash = crypto.createHash('sha256')
hash.update(text, 'utf-8')
return hash.digest('hex')
}
const JwtDecode = (token) => {
try {
const decoded = jwtDecode(token, { complete: true })
return decoded
} catch (error) {
logger.error('解析JWT失败', 'JWT', '', error)
return null
}
}
/**
* 生成UUID v4
* 使用Node.js内置的crypto.randomUUID()
* @returns {string} UUID v4字符串
*/
const generateUUID = () => {
return crypto.randomUUID()
}
module.exports = {
isJson,
sleep,
sha256Encrypt,
JwtDecode,
generateUUID
}
|