UNPKG

compact-base64

Version:

Base64 encoding and decoding for Node.JS and browsers without polyfills

55 lines (42 loc) 1.24 kB
'use strict'; var toUrlRe = /[+/=]/g; var toOriginalRe = /[-_]/g; var originalToUrl = function (encoded) { return encoded.replace(toUrlRe, function (match) { if (match == '=') return ''; else if (match == '+') return '-'; else if (match == '/') return '_'; }); }; var urlRoOriginal = function (encoded) { return padBase64(encoded.replace(toOriginalRe, function (match) { if (match == '-') return '+'; else if (match == '_') return '/'; })); }; var padBase64 = function (encoded) { var missing = 4 - (encoded.length % 4); if (missing !== 4) { encoded += "====".slice(0, missing); } return encoded; } module.exports = function (encode, decode) { var _module = {}; _module.originalToUrl = originalToUrl; _module.urlToOriginal = urlRoOriginal; _module.encode = encode; _module.decode = decode; _module.encodeUrl = function (source, inputEncoding) { return originalToUrl(encode(source, inputEncoding)); }; _module.decodeUrl = function (encoded, outputEncoding) { return decode(urlRoOriginal(encoded), outputEncoding); }; return _module; }