cg-utilities
Version:
This is a simple utility package
2 lines (1 loc) • 9.85 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("currency.js");function A(e,r){return Array.isArray(e)?e.reduce((n,o)=>u(n,{precision:4}).add(o).value,0):r===void 0?e:u(e,{precision:4}).add(r).value}function m(e,r){if(Array.isArray(e)){let n=0;return e.forEach(o=>{n?n=u(n,{precision:4}).subtract(o).value:n=o}),n}return r===void 0?e:u(e,{precision:4}).subtract(r).value}function y(e,r){if(Array.isArray(e)){let n=0;return e.forEach(o=>{n?n=u(n,{precision:4}).multiply(o).value:n=o}),n}return r===void 0?e:u(e,{precision:4}).multiply(r).value}function p(e,r){if(Array.isArray(e)){let n=0;return e.forEach(o=>{n?n=u(n,{precision:4}).divide(o).value:n=o}),n}return r===void 0?e:u(e,{precision:4}).divide(r).value}const s={DELTA:2654435769,base64EncodeChars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),base64DecodeChars:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],btoa(e){let r,n,o,t,c,F,i;for(n=o=0,t=e.length,c=t%3,t=t-c,F=t/3<<2,c>0&&(F+=4),r=new Array(F);n<t;)i=e.charCodeAt(n++)<<16|e.charCodeAt(n++)<<8|e.charCodeAt(n++),r[o++]=s.base64EncodeChars[i>>18]+s.base64EncodeChars[i>>12&63]+s.base64EncodeChars[i>>6&63]+s.base64EncodeChars[i&63];return c===1?(i=e.charCodeAt(n++),r[o++]=`${s.base64EncodeChars[i>>2]+s.base64EncodeChars[(i&3)<<4]}==`):c===2&&(i=e.charCodeAt(n++)<<8|e.charCodeAt(n++),r[o++]=`${s.base64EncodeChars[i>>10]+s.base64EncodeChars[i>>4&63]+s.base64EncodeChars[(i&15)<<2]}=`),r.join("")},atob(e){let r,n,o,t,c,F,i,a,l,d;if(i=e.length,i%4!==0||/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+\/\=]/.test(e))return"";for(e.charAt(i-2)==="="?a=1:e.charAt(i-1)==="="?a=2:a=0,l=i,a>0&&(l-=4),l=(l>>2)*3+a,d=new Array(l),c=F=0;c<i&&(r=s.base64DecodeChars[e.charCodeAt(c++)],!(r===-1||(n=s.base64DecodeChars[e.charCodeAt(c++)],n===-1)||(d[F++]=String.fromCharCode(r<<2|(n&48)>>4),o=s.base64DecodeChars[e.charCodeAt(c++)],o===-1)||(d[F++]=String.fromCharCode((n&15)<<4|(o&60)>>2),t=s.base64DecodeChars[e.charCodeAt(c++)],t===-1)));)d[F++]=String.fromCharCode((o&3)<<6|t);return d.join("")},toBinaryString(e,r){const n=e.length;let o=n<<2;if(r){const c=e[n-1];if(o-=4,c<o-3||c>o)return null;o=c}for(let c=0;c<n;c++)e[c]=String.fromCharCode(e[c]&255,e[c]>>>8&255,e[c]>>>16&255,e[c]>>>24&255);const t=e.join("");return r?t.substring(0,o):t},toUint32Array(e,r){const n=e.length;let o=n>>2;n&3&&++o;let t;r?(t=new Array(o+1),t[o]=n):t=new Array(o);for(let c=0;c<n;++c)t[c>>2]|=e.charCodeAt(c)<<((c&3)<<3);return t},int32(e){return e&4294967295},mx(e,r,n,o,t,c){return(n>>>5^r<<2)+(r>>>3^n<<4)^(e^r)+(c[o&3^t]^n)},fixk(e){return e.length<4&&(e.length=4),e},encryptUint32Array(e,r){const n=e.length,o=n-1;let t,c,F,i,a,l;for(c=e[o],F=0,l=Math.floor(6+52/n)|0;l>0;--l){for(F=s.int32(F+s.DELTA),i=F>>>2&3,a=0;a<o;++a)t=e[a+1],c=e[a]=s.int32(e[a]+s.mx(F,t,c,a,i,r));t=e[0],c=e[o]=s.int32(e[o]+s.mx(F,t,c,o,i,r))}return e},decryptUint32Array(e,r){const n=e.length,o=n-1;let t,c,F,i,a,l;for(t=e[0],l=Math.floor(6+52/n),F=s.int32(l*s.DELTA);F!==0;F=s.int32(F-s.DELTA)){for(i=F>>>2&3,a=o;a>0;--a)c=e[a-1],t=e[a]=s.int32(e[a]-s.mx(F,t,c,a,i,r));c=e[o],t=e[0]=s.int32(e[0]-s.mx(F,t,c,0,i,r))}return e},utf8Encode(e){if(/^[\x00-\x7F]*$/.test(e))return e;const r=[],n=e.length;for(let o=0,t=0;o<n;++o,++t){const c=e.charCodeAt(o);if(c<128)r[t]=e.charAt(o);else if(c<2048)r[t]=String.fromCharCode(192|c>>6,128|c&63);else if(c<55296||c>57343)r[t]=String.fromCharCode(224|c>>12,128|c>>6&63,128|c&63);else{if(o+1<n){const F=e.charCodeAt(o+1);if(c<56320&&F>=56320&&F<=57343){const i=((c&1023)<<10|F&1023)+65536;r[t]=String.fromCharCode(240|i>>18&63,128|i>>12&63,128|i>>6&63,128|i&63),++o;continue}}throw new Error("Malformed string")}}return r.join("")},utf8DecodeShortString(e,r){const n=new Array(r);let o=0,t=0;for(let c=e.length;o<r&&t<c;o++){const F=e.charCodeAt(t++);switch(F>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n[o]=F;break;case 12:case 13:if(t<c)n[o]=(F&31)<<6|e.charCodeAt(t++)&63;else throw new Error("Unfinished UTF-8 octet sequence");break;case 14:if(t+1<c)n[o]=(F&15)<<12|(e.charCodeAt(t++)&63)<<6|e.charCodeAt(t++)&63;else throw new Error("Unfinished UTF-8 octet sequence");break;case 15:if(t+2<c){const i=((F&7)<<18|(e.charCodeAt(t++)&63)<<12|(e.charCodeAt(t++)&63)<<6|e.charCodeAt(t++)&63)-65536;if(i>=0&&i<=1048575)n[o++]=i>>10&1023|55296,n[o]=i&1023|56320;else throw new Error(`Character outside valid Unicode range: 0x${i.toString(16)}`)}else throw new Error("Unfinished UTF-8 octet sequence");break;default:throw new Error(`Bad UTF-8 encoding 0x${F.toString(16)}`)}}return o<r&&(n.length=o),String.fromCharCode.apply(String,n)},utf8DecodeLongString(e,r){const n=[],o=new Array(32768);let t=0,c=0;for(let F=e.length;t<r&&c<F;t++){const i=e.charCodeAt(c++);switch(i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o[t]=i;break;case 12:case 13:if(c<F)o[t]=(i&31)<<6|e.charCodeAt(c++)&63;else throw new Error("Unfinished UTF-8 octet sequence");break;case 14:if(c+1<F)o[t]=(i&15)<<12|(e.charCodeAt(c++)&63)<<6|e.charCodeAt(c++)&63;else throw new Error("Unfinished UTF-8 octet sequence");break;case 15:if(c+2<F){const a=((i&7)<<18|(e.charCodeAt(c++)&63)<<12|(e.charCodeAt(c++)&63)<<6|e.charCodeAt(c++)&63)-65536;if(a>=0&&a<=1048575)o[t++]=a>>10&1023|55296,o[t]=a&1023|56320;else throw new Error(`Character outside valid Unicode range: 0x${a.toString(16)}`)}else throw new Error("Unfinished UTF-8 octet sequence");break;default:throw new Error(`Bad UTF-8 encoding 0x${i.toString(16)}`)}if(t>=32767-1){const a=t+1;o.length=a,n[n.length]=String.fromCharCode.apply(String,o),r-=a,t=-1}}return t>0&&(o.length=t,n[n.length]=String.fromCharCode.apply(String,o)),n.join("")},utf8Decode(e,r){return(r==null||r<0)&&(r=e.length),r===0?"":/^[\x00-\x7F]*$/.test(e)||!/^[\x00-\xFF]*$/.test(e)?r===e.length?e:e.substr(0,r):r<32767?s.utf8DecodeShortString(e,r):s.utf8DecodeLongString(e,r)},encrypt(e,r){return e==null||e.length===0?e:(e=s.utf8Encode(e),r=s.utf8Encode(r),s.toBinaryString(s.encryptUint32Array(s.toUint32Array(e,!0),s.fixk(s.toUint32Array(r,!1))),!1))},decrypt(e,r){return e==null||e.length===0?e:(r=s.utf8Encode(r),s.utf8Decode(s.toBinaryString(s.decryptUint32Array(s.toUint32Array(e,!1),s.fixk(s.toUint32Array(r,!1))),!0)))}};function w(e,r){return s.btoa(s.encrypt(e,r))}function g(e,r){return e==null||e.length===0?e:s.decrypt(s.atob(e),r)}function x(e={},r){const n=[];for(const c in e){const F=e[c];F!=null&&n.push(`${c}=${encodeURIComponent(F)}`)}const o=r.value;r.showConsole&&console.log("加密前",n.join("&"));const t=w(n.join("&"),o);return r.showConsole&&console.log("加密后",t),t}function E(e,r){const n=g(e,r.value);return JSON.parse(n)}function h(e,r){let n,o,t,c,F,i,a,l;for(n=e.length&3,o=e.length-n,t=r,F=3432918353,i=461845907,l=0;l<o;)a=e.charCodeAt(l)&255|(e.charCodeAt(++l)&255)<<8|(e.charCodeAt(++l)&255)<<16|(e.charCodeAt(++l)&255)<<24,++l,a=(a&65535)*F+(((a>>>16)*F&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(a&65535)*i+(((a>>>16)*i&65535)<<16)&4294967295,t^=a,t=t<<13|t>>>19,c=(t&65535)*5+(((t>>>16)*5&65535)<<16)&4294967295,t=(c&65535)+27492+(((c>>>16)+58964&65535)<<16);switch(a=0,n){case 3:a^=(e.charCodeAt(l+2)&255)<<16;case 2:a^=(e.charCodeAt(l+1)&255)<<8;case 1:a^=e.charCodeAt(l)&255,a=(a&65535)*F+(((a>>>16)*F&65535)<<16)&4294967295,a=a<<15|a>>>17,a=(a&65535)*i+(((a>>>16)*i&65535)<<16)&4294967295,t^=a}return t^=e.length,t^=t>>>16,t=(t&65535)*2246822507+(((t>>>16)*2246822507&65535)<<16)&4294967295,t^=t>>>13,t=(t&65535)*3266489909+(((t>>>16)*3266489909&65535)<<16)&4294967295,t^=t>>>16,t>>>0}function S(e,r,n,o,t){const c=o;let F="",i="";return e.toLocaleString()==="get"?(F=n.lastIndexOf(".json")>-1?n:f(r)?`/${n}&${f(r)}`:`/${n}`,F.includes("//")&&(F=F.replace("//","/")),i=t.value+c+F):e.toLocaleString()==="post"&&(F=`/${n}`,F.includes("//")&&(F=F.replace("//","/")),i=x(r,t)+t.value+c+F),i+="1.0.0",t.showConsole&&(console.groupCollapsed(`🔑🔑签名参数--${n}🔑🔑`),console.log("nonce加密前的字符串",i),console.log(`nonce------- ${t.murmurhash_key||36}`,h(i,t.murmurhash_key||36)),console.groupEnd()),h(i,t.murmurhash_key||36)}function f(e={}){const r=[];for(const n in e){const o=e[n];o!=null&&r.push(`${n}=${o}`)}return r.join("&")}function C(e){const r=e||location.origin+"/date";return new Promise(n=>{const o=new XMLHttpRequest;o.open("head",r,!0),o.send(null),o.timeout=15e3,o.onreadystatechange=()=>{if(o.readyState===4){const t=o.getResponseHeader("Date"),c=new Date(t),F=new Date().getTime(),i=c.getTime()-F,a=new Date(new Date().getTime()+i);localStorage.setItem("__serverTime",a.toUTCString()),n(a.toUTCString())}}})}function D(e){return new Promise(r=>{const n=localStorage.getItem("__serverTime");n?r(n):C(e).then(o=>{r(o)})})}function T(e){if(e===void 0)return{};for(const r in e)(e[r]===""||e[r]===void 0||e[r]===null)&&delete e[r];return e}async function U(e,r){const n=new Date().getTime();b(e);const o=r["X-Ca-Timestamp"],t=S(e.method,T(e.data||e.params),e.url,o,r);return e.headers["request-startTime"]=n,e.headers.d=r.d,e.headers.v="1.0.0",e.headers.u=performance.now(),e.headers.lang="zh-CN",e.headers["X-Ca-Timestamp"]=o,e.headers["X-Ca-Nonce"]=t,(e.method==="post"||e.method==="put")&&(e.data=x(e.data,r)),{}}function b(e){return e.url.indexOf("?")===-1?e.url+="?r="+new Date().getTime():e.url+="&r="+new Date().getTime(),e}exports.add=A;exports.decryptQuery=E;exports.divide=p;exports.getServerTime=D;exports.multiply=y;exports.setServerTime=C;exports.setXxetaConfig=U;exports.subtract=m;