30 lines
922 B
JavaScript
30 lines
922 B
JavaScript
const crypto = window.crypto || window.msCrypto;
|
|
const alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
|
|
const radix = alphabet.length;
|
|
const array = new Uint32Array(20);
|
|
const urlParser = window.document.createElement('a');
|
|
|
|
export default {
|
|
uid() {
|
|
crypto.getRandomValues(array);
|
|
return array.cl_map(value => alphabet[value % radix]).join('');
|
|
},
|
|
setInterval(func, interval) {
|
|
const randomizedInterval = Math.floor((1 + ((Math.random() - 0.5) * 0.1)) * interval);
|
|
setInterval(() => func(), randomizedInterval);
|
|
},
|
|
addQueryParam(url, key, value) {
|
|
if (!url || !key || !value) {
|
|
return url;
|
|
}
|
|
urlParser.href = url;
|
|
if (urlParser.search) {
|
|
urlParser.search += '&';
|
|
} else {
|
|
urlParser.search = '?';
|
|
}
|
|
urlParser.search += `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
|
|
return urlParser.href;
|
|
},
|
|
};
|