]> git.proxmox.com Git - mirror_novnc.git/blobdiff - core/base64.js
Drop support for Internet Explorer
[mirror_novnc.git] / core / base64.js
index 2b4f948f4a3c9db9d506769d433fc6efaae560bf..db572c2db4c044cb3f3c9e680cbb49584d89f490 100644 (file)
@@ -4,51 +4,47 @@
 
 // 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     : '=',
+    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 : [
+    /* eslint-disable comma-spacing */
+    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,
         -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
@@ -58,31 +54,26 @@ 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 */
+    /* eslint-enable comma-spacing */
 
-    decode: function (data, offset) {
-        "use strict";
-        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;
-
-        if (data_length < 0) { data_length = data.length - offset; }
+    decode(data, offset = 0) {
+        let dataLength = data.indexOf('=') - offset;
+        if (dataLength < 0) { dataLength = 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 resultLength = (dataLength >> 2) * 3 + Math.floor((dataLength % 4) / 1.5);
+        const result = new Array(resultLength);
 
         // 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; */