]> git.proxmox.com Git - mirror_novnc.git/blobdiff - core/base64.js
Use ES6 classes
[mirror_novnc.git] / core / base64.js
index 2b4f948f4a3c9db9d506769d433fc6efaae560bf..895aa464d1a424d0ba31ba0ca0ca07741a17b347 100644 (file)
@@ -4,50 +4,45 @@
 
 // From: http://hg.mozilla.org/mozilla-central/raw-file/ec10630b1a54/js/src/devtools/jint/sunspider/string-base64.js
 
-/*jslint white: false */
-/*global console */
+import * as Log from './util/logging.js';
 
-var Base64 = {
+export default {
     /* Convert data (an array of integers) to a Base64 string. */
     toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split(''),
     base64Pad     : '=',
 
-    encode: function (data) {
+    encode(data) {
         "use strict";
-        var result = '';
-        var toBase64Table = Base64.toBase64Table;
-        var length = data.length;
-        var lengthpad = (length % 3);
+        let result = '';
+        const length = data.length;
+        const lengthpad = (length % 3);
         // Convert every three bytes to 4 ascii characters.
 
-        for (var i = 0; i < (length - 2); i += 3) {
-            result += toBase64Table[data[i] >> 2];
-            result += toBase64Table[((data[i] & 0x03) << 4) + (data[i + 1] >> 4)];
-            result += toBase64Table[((data[i + 1] & 0x0f) << 2) + (data[i + 2] >> 6)];
-            result += toBase64Table[data[i + 2] & 0x3f];
+        for (let i = 0; i < (length - 2); i += 3) {
+            result += this.toBase64Table[data[i] >> 2];
+            result += this.toBase64Table[((data[i] & 0x03) << 4) + (data[i + 1] >> 4)];
+            result += this.toBase64Table[((data[i + 1] & 0x0f) << 2) + (data[i + 2] >> 6)];
+            result += this.toBase64Table[data[i + 2] & 0x3f];
         }
 
         // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
-        var j = 0;
+        const j = length - lengthpad;
         if (lengthpad === 2) {
-            j = length - lengthpad;
-            result += toBase64Table[data[j] >> 2];
-            result += toBase64Table[((data[j] & 0x03) << 4) + (data[j + 1] >> 4)];
-            result += toBase64Table[(data[j + 1] & 0x0f) << 2];
-            result += toBase64Table[64];
+            result += this.toBase64Table[data[j] >> 2];
+            result += this.toBase64Table[((data[j] & 0x03) << 4) + (data[j + 1] >> 4)];
+            result += this.toBase64Table[(data[j + 1] & 0x0f) << 2];
+            result += this.toBase64Table[64];
         } else if (lengthpad === 1) {
-            j = length - lengthpad;
-            result += toBase64Table[data[j] >> 2];
-            result += toBase64Table[(data[j] & 0x03) << 4];
-            result += toBase64Table[64];
-            result += toBase64Table[64];
+            result += this.toBase64Table[data[j] >> 2];
+            result += this.toBase64Table[(data[j] & 0x03) << 4];
+            result += this.toBase64Table[64];
+            result += this.toBase64Table[64];
         }
 
         return result;
     },
 
     /* Convert Base64 data to a string */
-    /* jshint -W013 */
     toBinaryTable : [
         -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
         -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
@@ -58,31 +53,27 @@ var Base64 = {
         -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
         41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
     ],
-    /* jshint +W013 */
 
-    decode: function (data, offset) {
-        "use strict";
+    decode(data, offset) {
         offset = typeof(offset) !== 'undefined' ? offset : 0;
-        var toBinaryTable = Base64.toBinaryTable;
-        var base64Pad = Base64.base64Pad;
-        var result, result_length;
-        var leftbits = 0; // number of bits decoded, but yet to be appended
-        var leftdata = 0; // bits decoded, but yet to be appended
-        var data_length = data.indexOf('=') - offset;
 
+        let data_length = data.indexOf('=') - offset;
         if (data_length < 0) { data_length = data.length - offset; }
 
         /* Every four characters is 3 resulting numbers */
-        result_length = (data_length >> 2) * 3 + Math.floor((data_length % 4) / 1.5);
-        result = new Array(result_length);
+        const result_length = (data_length >> 2) * 3 + Math.floor((data_length % 4) / 1.5);
+        const result = new Array(result_length);
 
         // Convert one by one.
-        for (var idx = 0, i = offset; i < data.length; i++) {
-            var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
-            var padding = (data.charAt(i) === base64Pad);
+
+        let leftbits = 0; // number of bits decoded, but yet to be appended
+        let leftdata = 0; // bits decoded, but yet to be appended
+        for (let idx = 0, i = offset; i < data.length; i++) {
+            const c = this.toBinaryTable[data.charCodeAt(i) & 0x7f];
+            const padding = (data.charAt(i) === this.base64Pad);
             // Skip illegal characters and whitespace
             if (c === -1) {
-                console.error("Illegal character code " + data.charCodeAt(i) + " at position " + i);
+                Log.Error("Illegal character code " + data.charCodeAt(i) + " at position " + i);
                 continue;
             }
 
@@ -103,7 +94,7 @@ var Base64 = {
 
         // If there are any bits left, the base64 string was corrupted
         if (leftbits) {
-            err = new Error('Corrupted base64 string');
+            const err = new Error('Corrupted base64 string');
             err.name = 'Base64-Error';
             throw err;
         }
@@ -111,5 +102,3 @@ var Base64 = {
         return result;
     }
 }; /* End of Base64 namespace */
-
-/* [module] export default Base64; */