parent
ab9849e72f
commit
595fd9de6e
@ -0,0 +1,29 @@ |
||||
{ |
||||
"name": "base64", |
||||
"version": "0.3.0", |
||||
"description": "Base64 encoding and decoding", |
||||
"main": "./base64.js", |
||||
"license": "WTFPL", |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "git://github.com/davidchambers/Base64.js.git" |
||||
}, |
||||
"ignore": [ |
||||
"**/.*", |
||||
"Makefile", |
||||
"coverage/", |
||||
"scripts/", |
||||
"test/" |
||||
], |
||||
"homepage": "https://github.com/davidchambers/Base64.js", |
||||
"_release": "0.3.0", |
||||
"_resolution": { |
||||
"type": "version", |
||||
"tag": "0.3.0", |
||||
"commit": "772df096a5ffe983f40202684ad45eed1e0e2d59" |
||||
}, |
||||
"_source": "git://github.com/davidchambers/Base64.js.git", |
||||
"_target": "~0.3.0", |
||||
"_originalSource": "base64", |
||||
"_direct": true |
||||
} |
@ -0,0 +1,14 @@ |
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
Version 2, December 2004 |
||||
|
||||
Copyright (c) 2011..2012 David Chambers <dc@hashify.me> |
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified |
||||
copies of this license document, and changing it is allowed as long |
||||
as the name is changed. |
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO. |
@ -0,0 +1,61 @@ |
||||
;(function () { |
||||
|
||||
var object = typeof exports != 'undefined' ? exports : this; // #8: web workers
|
||||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; |
||||
|
||||
function InvalidCharacterError(message) { |
||||
this.message = message; |
||||
} |
||||
InvalidCharacterError.prototype = new Error; |
||||
InvalidCharacterError.prototype.name = 'InvalidCharacterError'; |
||||
|
||||
// encoder
|
||||
// [https://gist.github.com/999166] by [https://github.com/nignag]
|
||||
object.btoa || ( |
||||
object.btoa = function (input) { |
||||
var str = String(input); |
||||
for ( |
||||
// initialize result and counter
|
||||
var block, charCode, idx = 0, map = chars, output = ''; |
||||
// if the next str index does not exist:
|
||||
// change the mapping table to "="
|
||||
// check if d has no fractional digits
|
||||
str.charAt(idx | 0) || (map = '=', idx % 1); |
||||
// "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
|
||||
output += map.charAt(63 & block >> 8 - idx % 1 * 8) |
||||
) { |
||||
charCode = str.charCodeAt(idx += 3/4); |
||||
if (charCode > 0xFF) { |
||||
throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."); |
||||
} |
||||
block = block << 8 | charCode; |
||||
} |
||||
return output; |
||||
}); |
||||
|
||||
// decoder
|
||||
// [https://gist.github.com/1020396] by [https://github.com/atk]
|
||||
object.atob || ( |
||||
object.atob = function (input) { |
||||
var str = String(input).replace(/=+$/, ''); |
||||
if (str.length % 4 == 1) { |
||||
throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); |
||||
} |
||||
for ( |
||||
// initialize result and counters
|
||||
var bc = 0, bs, buffer, idx = 0, output = ''; |
||||
// get next character
|
||||
buffer = str.charAt(idx++); |
||||
// character found in table? initialize bit storage and add its ascii value;
|
||||
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, |
||||
// and if not first of each 4 characters,
|
||||
// convert the first 8 bits to one ascii character
|
||||
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 |
||||
) { |
||||
// try to find character in table (0-63, not found => -1)
|
||||
buffer = chars.indexOf(buffer); |
||||
} |
||||
return output; |
||||
}); |
||||
|
||||
}()); |
Loading…
Reference in new issue