unselfish
Version:
A high-performance js toolkit
2 lines (1 loc) • 4.77 kB
JavaScript
;var e;!function(e){class t{constructor(){console.log(this.Initialization())}Initialization(){return"Welcome to the Unselfish library"}}class s extends t{constructor(){super()}static debounce(){let e=null,t=!0;return function(s,a,r,n=!0){n?(t&&(s(a),t=!1),clearTimeout(e),e=setTimeout((()=>{clearTimeout(e),e=null,t=!0}),r)):(e&&clearTimeout(e),e=setTimeout((()=>{s(a),clearTimeout(e),e=null}),r))}}static throttle(){let e=null,t=!0;return function(s,a,r,n=!0){if(n){if(!t)return;s(a),t=!1,e=setTimeout((()=>{clearTimeout(e),e=null,t=!0}),r)}else{if(!t)return;t=!1,e=setTimeout((()=>{s(a),clearTimeout(e),e=null,t=!0}),r)}}}static lazyLoading(e,t){const s=e.lazyAttr||"lazy",a=e.loadType||"src",r=new IntersectionObserver((function(e){for(let t=0;t<e.length;t++){const r=e[t],n=e[t].target;if(r.isIntersecting)switch(a){case"src":n.src=n.getAttribute(s);break;case"background":n.style.backgroundImage=`url(${r.target.getAttribute(s)})`}}}),null!=t?t:void 0),n=function(){const e=document.querySelectorAll(`[${s}]`),t=e.length;for(let s=0;s<t;s++)r.observe(e[s])};return n(),{observer:r,update:n}}static fetchRequest(e,t,s,a,r){const n=null!=r?r:5e3;let i=null,o="";if(/GET/i.test(e)){for(const e in s)o+=`&${e}=${s[e]}`;o&&(o="?"+o.slice(1))}else i=JSON.stringify(s);return new Promise(((s,r)=>{fetch(t+o,{method:e,headers:a,body:i}).then((e=>e.json())).then((e=>{s(e)})).catch((e=>{r(e)})),setTimeout(r.bind(this,"The fetch request has timed out"),n)}))}static byteLength(e){let t=0;return e.replace(/[\u{0000}-\u{007f}]/gu,(e=>(t+=1,e))),e.replace(/[\u{0080}-\u{07ff}]/gu,(e=>(t+=2,e))),e.replace(/[\u{0800}-\u{ffff}]/gu,(e=>(t+=3,e))),e.replace(/[\u{010000}-\u{10ffff}]/gu,(e=>(t+=4,e))),t}static checkType(e){var t,s;return null===(s=null===(t=Object.prototype.toString.call(e))||void 0===t?void 0:t.slice(8,-1))||void 0===s?void 0:s.toLocaleLowerCase()}static getFileMimeType(e){var t;let s=new Uint8Array(e),a="";for(let e=0;e<4;e++)a+=null===(t=s[e])||void 0===t?void 0:t.toString(16);let r="",n="";switch(a){case"ffd8ffe1":r="jpg",n=["image/jpeg","image/pjpeg"];break;case"47494638":r="gif",n="image/gif";break;case"89504e47":r="png",n=["image/png","image/x-png"];break;case"504b34":r="zip",n=["application/x-zip","application/zip","application/x-zip-compressed"];break;case"2f2aae5":r="js",n="application/x-javascript";break;case"2f2ae585":r="css",n="text/css";break;case"3c212d2d":r="ejs",n="text/html";break;case"41564920":r="avi",n="video/x-msvideo";break;case"6D6F6F76":r="mov",n="video/quicktime";break;case"00018":r="mp4",n="video/mp4";break;case"3c737667":r="svg",n="image/svg+xml";break;case"3c21444f":r="html",n="text/html";break;default:r="unknown"}return{filetype:r,mimetype:n}}static XHRRequest(e){return new Promise(((t,a)=>{const r=new XMLHttpRequest,n=e.method,i=e.overtime||0,o=e.strict&&!0;let c=e.baseUrl+(e.url||""),l="",u="",p=e.serialization||!1;const f=s.checkType(e.data);if(/GET/i.test(n)){if("object"===f)for(const t in e.data)u+="&"+t+"="+e.data[t];u&&(u="?"+u.slice(1),c+=u)}else l="object"===f?JSON.stringify(null==e?void 0:e.data):null==e?void 0:e.data;if(r.onreadystatechange=()=>{if(4===r.readyState)if((o?200===r.status:r.status>=200&&r.status<300)||304===r.status){if("function"==typeof e.success){let s=null;if(p)try{s=JSON.parse(r.response)}catch(e){console.warn("The response data cannot be serialized, and the original data will be returned!!!"),s=r.response}finally{t(s),e.success(s,r)}else t(r.response),e.success(r.response,r)}}else"function"==typeof e.fail&&e.fail(r),a(r)},"function"==typeof e.progress&&r.addEventListener("progress",e.progress),r.responseType=e.responseType||"json",r.open(n,c,!0),/GET/i.test(n))switch(f){case"object":r.setRequestHeader("Content-Type","application/json");break;case"string":r.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}if(e.headers)for(const t in e.headers)r.setRequestHeader(`${t}`,`${e.headers[t]}`);i>0&&(r.timeout=i,r.ontimeout=()=>{console.warn("XMLHttpRequest 请求超时 !!!"),r.abort(),"function"==typeof e.timeout&&e.timeout(r)}),r.send(l)}))}static deepClone(e){let t={};switch(null==e?void 0:e.constructor){case Object:e={map:Object.assign({},e)};break;case Array:e={map:[...e]};break;case Map:e={map:new Map([...e])};break;case Set:e={map:new Set([...e])};break;case Date:return new Date(e);case Function:return e;case Error:return new Error(e);default:return t=null,{}}const s=(e,t)=>{var a;const r=Reflect.ownKeys(e);for(let n of r){const r=null===(a=e[n])||void 0===a?void 0:a.constructor;r===Object?(t[n]={},s(e[n],t[n])):r===Array?(t[n]=[],s(e[n],t[n])):r===Set||r===Map?(t[n]=[],s([...e[n]],t[n]),t[n]=r===Set?new Set(t[n]):new Map(t[n])):t[n]=e[n]}};return s(e,t),t.map}}e.Que=s}(e||(e={}));var t=e.Que;module.exports=t;