UNPKG

url-encode-base64

Version:

Better than "encodeURIComponent" to reduce character overhead

6 lines 1.08 kB
/*! * url-encode-base64 v1.0.0 * (c) 2022-2022 jobyrao<raojianb@mail2.sysu.edu.cn> * Released under the MIT License. */ function r(r){if(!r)return"";for(var t=encodeURIComponent(r),n="",a=0,o=t.length;a<o;a++){var e=t[a];if("%"===e){var f=t[a+1]+t[a+2];n+=parseInt(f,16).toString(2).padStart(8,"0"),a+=2}else n+=e.charCodeAt().toString(2).padStart(8,"0")}var v=n.length%6,d=0;if(0!==v){for(var i=0;v%6!=0;)v+=8,i+=8;d=Math.floor(i/6),n+="".padEnd(i-6*d,"0")}for(var p="",c=0,g=n.length;c<g;c+=6){var s=n.substr(c,6);p+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-"[parseInt(s,2)]}return p+"".padEnd(d,"=")}function t(r){var t={};Object.values("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-").forEach((function(r,n){t[r]=n}));for(var n="",a=0,o=r.length;a<o;a++){var e=r[a];"="!==e&&(n+=t[e].toString(2).padStart(6,"0"))}for(var f="",v=0,d=n.length;v+8<=d;v+=8){var i=n.substr(v,8),p=parseInt(i,2);f+=p<128&&37!=~~p?String.fromCodePoint(p):"%".concat(p.toString(16))}return decodeURIComponent(f)}export{t as urlDecode,r as urlEncode};