diff --git a/lib/base64-arraybuffer.js b/lib/base64-arraybuffer.js index e6b6306..5ab7aeb 100644 --- a/lib/base64-arraybuffer.js +++ b/lib/base64-arraybuffer.js @@ -15,6 +15,9 @@ for (var i = 0; i < chars.length; i++) { lookup[chars.charCodeAt(i)] = i; } + // base64url equivalents + lookup['-'.charCodeAt(0)] = 62; + lookup['_'.charCodeAt(0)] = 63; exports.encode = function(arraybuffer) { var bytes = new Uint8Array(arraybuffer), diff --git a/test/base64-arraybuffer_test.js b/test/base64-arraybuffer_test.js index 76d22ae..da85a1e 100644 --- a/test/base64-arraybuffer_test.js +++ b/test/base64-arraybuffer_test.js @@ -53,4 +53,5 @@ describe('decode', () => { it('decode "Hello world"', () => ok(testArrayBuffers(decode("SGVsbG8gd29ybGQ="), stringArrayBuffer("Hello world")))); it('decode "Hello worlds!"', () => ok(testArrayBuffers(decode("SGVsbG8gd29ybGRzIQ=="), stringArrayBuffer("Hello worlds!")))); it('decode all binary characters', () => ok(testArrayBuffers(decode("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="), rangeArrayBuffer()))); + it('decode all binary characters from base64url', () => ok(testArrayBuffers(decode("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w=="), rangeArrayBuffer()))); });