29 lines
843 B
JavaScript
29 lines
843 B
JavaScript
|
|
export function createId() {
|
||
|
|
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
||
|
|
return crypto.randomUUID()
|
||
|
|
}
|
||
|
|
return `${Date.now()}-${Math.random().toString(16).slice(2)}`
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatFileSize(size) {
|
||
|
|
const value = Number(size || 0)
|
||
|
|
if (value < 1024) return `${value}B`
|
||
|
|
if (value < 1024 * 1024) return `${(value / 1024).toFixed(1)}KB`
|
||
|
|
return `${(value / 1024 / 1024).toFixed(1)}MB`
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatTestError(error, fallback) {
|
||
|
|
const message = String(error?.message || '').trim()
|
||
|
|
if (/not\s*found/i.test(message)) {
|
||
|
|
return '测试接口暂未加载或规则详情已失效,请刷新规则详情后再试。'
|
||
|
|
}
|
||
|
|
return message || fallback
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatTime() {
|
||
|
|
return new Intl.DateTimeFormat('zh-CN', {
|
||
|
|
hour: '2-digit',
|
||
|
|
minute: '2-digit'
|
||
|
|
}).format(new Date())
|
||
|
|
}
|