import ispint from './ispint.mjs'
import cint from './cint.mjs'
let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
let radix = chars.length
/**
* 產生隨機id
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/genID.test.mjs Github}
* @memberOf wsemi
* @param {Integer} [len=32] 輸入uuid長度,為正整數,預設32
* @returns {String} 回傳uuid字串
* @example
*
* console.log(genID())
* // => Is1NyImU3A9fyqFyYBWuJu4ivXXcGZAb (is random)
*
*/
function genID(len = 32) {
let uuid = []
//check
if (ispint(len)) {
len = cint(len)
}
else {
len = 32
}
//uuid
for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]
//rfc4122, version 4 form
// //requires these characters
// uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
// uuid[14] = '4'
// //fill in random data. At i==19 set the high bits of clock sequence as per rfc4122, sec. 4.1.5
// let r
// for (i = 0; i < 36; i++) {
// if (!uuid[i]) {
// r = 0 | Math.random() * 16
// uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r]
// }
// }
let r = uuid.join('')
return r
}
export default genID