Files
s-ui/frontend/src/plugins/randomUtil.ts
T
2024-07-23 17:26:50 +02:00

49 lines
1.4 KiB
TypeScript

const seq = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')
const RandomUtil = {
randomIntRange(min: number, max: number): number {
return parseInt((Math.random() * (max - min) + min).toString(), 10)
},
randomInt(n: number) {
return this.randomIntRange(0, n)
},
randomSeq(count: number): string {
let str = ''
for (let i = 0; i < count; ++i) {
str += seq[this.randomInt(62)]
}
return str
},
randomLowerAndNum(count: number): string {
let str = ''
for (let i = 0; i < count; ++i) {
str += seq[this.randomInt(36)]
}
return str
},
randomUUID(): string {
let d = new Date().getTime()
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
let r = (d + Math.random() * 16) % 16 | 0
d = Math.floor(d / 16)
return (c === 'x' ? r : (r & 0x7 | 0x8)).toString(16)
})
},
randomShadowsocksPassword(n: number): string {
const array = new Uint8Array(n)
window.crypto.getRandomValues(array)
return btoa(String.fromCharCode(...array))
},
randomShortId(): string[] {
let shortIds = new Array(24).fill('')
for (var ii = 1; ii < 24; ii++) {
for (var jj = 0; jj <= this.randomInt(7); jj++){
let randomNum = this.randomInt(256)
shortIds[ii] += ('0' + randomNum.toString(16)).slice(-2)
}
}
return shortIds
}
}
export default RandomUtil