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