Forráskód Böngészése

decode functions now ie8 compatible

sanex3339 8 éve
szülő
commit
a33bef01b9

+ 1 - 1
README.md

@@ -281,7 +281,7 @@ Available values:
 * `true` (`boolean`): encode `unicodeArray` values using `base64`
 * `false` (`boolean`): don't encode `unicodeArray` values
 * `'base64'` (`string`): encode `unicodeArray` values using `base64`
-* `'rc4'` (`string`): encode `unicodeArray` values using `rc4`
+* `'rc4'` (`string`): encode `unicodeArray` values using `rc4`. **Much slower then `base64`!**
     
 ### `unicodeArrayThreshold`
 Type: `number` Default: `0.8` Min: `0` Max: `1`

+ 2 - 2
dist/index.js

@@ -3985,7 +3985,7 @@ exports.SelfDefendingTemplate = SelfDefendingTemplate;
 "use strict";
 
 function UnicodeArrayBase64DecodeNodeTemplate() {
-    return "      \n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {\n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n                \n        var decodedValues = {unicodeArrayCallsWrapperName}.data || {};\n        \n        if (!decodedValues[index]) {\n            var base64DecodeUnicode = function (str) {\n                return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {\n                    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n                }).join(''));\n            }\n            \n            {selfDefendingCode}\n            \n            value = base64DecodeUnicode(value);\n            decodedValues[index] = value;\n        } else {\n            value = decodedValues[index];\n        }  \n        \n        {unicodeArrayCallsWrapperName}.data = decodedValues;                             \n    ";
+    return "      \n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {\n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n                \n        var decodedValues = {unicodeArrayCallsWrapperName}.data || {};\n        \n        if (!decodedValues[index]) {\n            var base64DecodeUnicode = function (str) {\n                var stringChars = atob(str).split('');\n                var newStringChars = '';\n                \n                for (var char in stringChars) {\n                    newStringChars += '%' + ('00' + stringChars[char].charCodeAt(0).toString(16)).slice(-2);\n                }\n                \n                return decodeURIComponent(newStringChars);\n            }\n            \n            {selfDefendingCode}\n            \n            value = base64DecodeUnicode(value);\n            decodedValues[index] = value;\n        } else {\n            value = decodedValues[index];\n        }  \n        \n        {unicodeArrayCallsWrapperName}.data = decodedValues;                             \n    ";
 }
 exports.UnicodeArrayBase64DecodeNodeTemplate = UnicodeArrayBase64DecodeNodeTemplate;
 
@@ -4009,7 +4009,7 @@ exports.UnicodeArrayCallsWrapperTemplate = UnicodeArrayCallsWrapperTemplate;
 "use strict";
 
 function UnicodeArrayRc4DecodeNodeTemplate() {
-    return "\n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {\n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n        \n        {rc4Polyfill}\n                \n        var decodedValues = {unicodeArrayCallsWrapperName}.data || {};\n        \n        if (!decodedValues[index]) {\n            var base64DecodeUnicode = function (str) {\n                return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {\n                    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n                }).join(''));\n            }\n        \n            {selfDefendingCode}\n            \n            value = rc4(base64DecodeUnicode(value), key);\n            decodedValues[index] = value;\n        } else {\n            value = decodedValues[index];\n        }  \n                \n        {unicodeArrayCallsWrapperName}.data = decodedValues;                             \n    ";
+    return "\n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {\n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n        \n        {rc4Polyfill}\n                \n        var decodedValues = {unicodeArrayCallsWrapperName}.data || {};\n        \n        if (!decodedValues[index]) {\n            var base64DecodeUnicode = function (str) {\n                var stringChars = atob(str).split('');\n                var newStringChars = '';\n                \n                for (var char in stringChars) {\n                    newStringChars += '%' + ('00' + stringChars[char].charCodeAt(0).toString(16)).slice(-2);\n                }\n                \n                return decodeURIComponent(newStringChars);\n            }\n\n            {selfDefendingCode}\n            \n            value = rc4(base64DecodeUnicode(value), key);\n            decodedValues[index] = value;\n        } else {\n            value = decodedValues[index];\n        }  \n                \n        {unicodeArrayCallsWrapperName}.data = decodedValues;                             \n    ";
 }
 exports.UnicodeArrayRc4DecodeNodeTemplate = UnicodeArrayRc4DecodeNodeTemplate;
 

+ 8 - 3
src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayBase64DecodeNodeTemplate.ts

@@ -13,9 +13,14 @@ export function UnicodeArrayBase64DecodeNodeTemplate (): string {
         
         if (!decodedValues[index]) {
             var base64DecodeUnicode = function (str) {
-                return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
-                    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
-                }).join(''));
+                var stringChars = atob(str).split('');
+                var newStringChars = '';
+                
+                for (var char in stringChars) {
+                    newStringChars += '%' + ('00' + stringChars[char].charCodeAt(0).toString(16)).slice(-2);
+                }
+                
+                return decodeURIComponent(newStringChars);
             }
             
             {selfDefendingCode}

+ 9 - 4
src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayRC4DecodeNodeTemplate.ts

@@ -15,11 +15,16 @@ export function UnicodeArrayRc4DecodeNodeTemplate (): string {
         
         if (!decodedValues[index]) {
             var base64DecodeUnicode = function (str) {
-                return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
-                    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
-                }).join(''));
+                var stringChars = atob(str).split('');
+                var newStringChars = '';
+                
+                for (var char in stringChars) {
+                    newStringChars += '%' + ('00' + stringChars[char].charCodeAt(0).toString(16)).slice(-2);
+                }
+                
+                return decodeURIComponent(newStringChars);
             }
-        
+
             {selfDefendingCode}
             
             value = rc4(base64DecodeUnicode(value), key);