Ver Fonte

rc4 and base64 decoding performance update

sanex3339 há 8 anos atrás
pai
commit
e7e8660529

+ 2 - 2
dist/index.js

@@ -3955,7 +3955,7 @@ exports.SelfDefendingTemplate = SelfDefendingTemplate;
 "use strict";
 "use strict";
 
 
 function UnicodeArrayBase64DecodeNodeTemplate() {
 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                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    ";
+    return "      \n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {\n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n        \n        if (!{unicodeArrayCallsWrapperName}.base64DecodeUnicode) {                \n            {unicodeArrayCallsWrapperName}.base64DecodeUnicode = function (str) {\n                var string = atob(str);\n                var newStringChars = [];\n                \n                for (var i = 0, length = string.length; i < length; i++) {\n                    newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);\n                }\n                \n                return decodeURIComponent(newStringChars);\n            };\n        }\n        \n        if (!{unicodeArrayCallsWrapperName}.data) {\n            {unicodeArrayCallsWrapperName}.data = {};\n        }\n                        \n        if (!{unicodeArrayCallsWrapperName}.data[index]) {\n            {selfDefendingCode}\n            \n            value = {unicodeArrayCallsWrapperName}.base64DecodeUnicode(value);\n            {unicodeArrayCallsWrapperName}.data[index] = value;\n        } else {\n            value = {unicodeArrayCallsWrapperName}.data[index];\n        }  \n    ";
 }
 }
 exports.UnicodeArrayBase64DecodeNodeTemplate = UnicodeArrayBase64DecodeNodeTemplate;
 exports.UnicodeArrayBase64DecodeNodeTemplate = UnicodeArrayBase64DecodeNodeTemplate;
 
 
@@ -3979,7 +3979,7 @@ exports.UnicodeArrayCallsWrapperTemplate = UnicodeArrayCallsWrapperTemplate;
 "use strict";
 "use strict";
 
 
 function UnicodeArrayRc4DecodeNodeTemplate() {
 function UnicodeArrayRc4DecodeNodeTemplate() {
-    return "\n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {            \n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n        \n        if (!{unicodeArrayCallsWrapperName}.rc4) {            \n            {rc4Polyfill}\n            \n            {unicodeArrayCallsWrapperName}.rc4 = rc4;\n        }\n                        \n        if (!{unicodeArrayCallsWrapperName}.data) {\n            {unicodeArrayCallsWrapperName}.data = {};\n        }\n\n        if ({unicodeArrayCallsWrapperName}.data[index] === undefined) {\n            var base64DecodeUnicode = function (str) {\n                var string = atob(str);\n                var newStringChars = [];\n                \n                for (var i = 0, length = string.length; i < length; i++) {\n                    newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);\n                }\n                \n                return decodeURIComponent(newStringChars);\n            }\n\n            {selfDefendingCode}\n            \n            value = {unicodeArrayCallsWrapperName}.rc4(base64DecodeUnicode(value), key);\n            {unicodeArrayCallsWrapperName}.data[index] = value;\n        } else {\n            value = {unicodeArrayCallsWrapperName}.data[index];\n        }\n    ";
+    return "\n        if (!{unicodeArrayCallsWrapperName}.atobPolyfillAppended) {            \n            {atobPolyfill}\n            \n            {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;\n        }\n        \n        if (!{unicodeArrayCallsWrapperName}.rc4) {            \n            {rc4Polyfill}\n            \n            {unicodeArrayCallsWrapperName}.rc4 = rc4;\n        }\n        \n        if (!{unicodeArrayCallsWrapperName}.base64DecodeUnicode) {                \n            {unicodeArrayCallsWrapperName}.base64DecodeUnicode = function (str) {\n                var string = atob(str);\n                var newStringChars = [];\n                \n                for (var i = 0, length = string.length; i < length; i++) {\n                    newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);\n                }\n                \n                return decodeURIComponent(newStringChars);\n            };\n        }\n                        \n        if (!{unicodeArrayCallsWrapperName}.data) {\n            {unicodeArrayCallsWrapperName}.data = {};\n        }\n\n        if ({unicodeArrayCallsWrapperName}.data[index] === undefined) {\n            if (!{unicodeArrayCallsWrapperName}.once) {\n                {selfDefendingCode}\n                \n                {unicodeArrayCallsWrapperName}.once = true;\n            }\n            \n            value = {unicodeArrayCallsWrapperName}.rc4(\n                {unicodeArrayCallsWrapperName}.base64DecodeUnicode(value), \n                key\n            );\n            {unicodeArrayCallsWrapperName}.data[index] = value;\n        } else {\n            value = {unicodeArrayCallsWrapperName}.data[index];\n        }\n    ";
 }
 }
 exports.UnicodeArrayRc4DecodeNodeTemplate = UnicodeArrayRc4DecodeNodeTemplate;
 exports.UnicodeArrayRc4DecodeNodeTemplate = UnicodeArrayRc4DecodeNodeTemplate;
 
 

+ 17 - 15
src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayBase64DecodeNodeTemplate.ts

@@ -8,29 +8,31 @@ export function UnicodeArrayBase64DecodeNodeTemplate (): string {
             
             
             {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;
             {unicodeArrayCallsWrapperName}.atobPolyfillAppended = true;
         }
         }
-                
-        var decodedValues = {unicodeArrayCallsWrapperName}.data || {};
         
         
-        if (!decodedValues[index]) {
-            var base64DecodeUnicode = function (str) {
-                var stringChars = atob(str).split('');
-                var newStringChars = '';
+        if (!{unicodeArrayCallsWrapperName}.base64DecodeUnicode) {                
+            {unicodeArrayCallsWrapperName}.base64DecodeUnicode = function (str) {
+                var string = atob(str);
+                var newStringChars = [];
                 
                 
-                for (var char in stringChars) {
-                    newStringChars += '%' + ('00' + stringChars[char].charCodeAt(0).toString(16)).slice(-2);
+                for (var i = 0, length = string.length; i < length; i++) {
+                    newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);
                 }
                 }
                 
                 
                 return decodeURIComponent(newStringChars);
                 return decodeURIComponent(newStringChars);
-            }
-            
+            };
+        }
+        
+        if (!{unicodeArrayCallsWrapperName}.data) {
+            {unicodeArrayCallsWrapperName}.data = {};
+        }
+                        
+        if (!{unicodeArrayCallsWrapperName}.data[index]) {
             {selfDefendingCode}
             {selfDefendingCode}
             
             
-            value = base64DecodeUnicode(value);
-            decodedValues[index] = value;
+            value = {unicodeArrayCallsWrapperName}.base64DecodeUnicode(value);
+            {unicodeArrayCallsWrapperName}.data[index] = value;
         } else {
         } else {
-            value = decodedValues[index];
+            value = {unicodeArrayCallsWrapperName}.data[index];
         }  
         }  
-        
-        {unicodeArrayCallsWrapperName}.data = decodedValues;                             
     `;
     `;
 }
 }

+ 19 - 10
src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayRC4DecodeNodeTemplate.ts

@@ -14,13 +14,9 @@ export function UnicodeArrayRc4DecodeNodeTemplate (): string {
             
             
             {unicodeArrayCallsWrapperName}.rc4 = rc4;
             {unicodeArrayCallsWrapperName}.rc4 = rc4;
         }
         }
-                        
-        if (!{unicodeArrayCallsWrapperName}.data) {
-            {unicodeArrayCallsWrapperName}.data = {};
-        }
-
-        if ({unicodeArrayCallsWrapperName}.data[index] === undefined) {
-            var base64DecodeUnicode = function (str) {
+        
+        if (!{unicodeArrayCallsWrapperName}.base64DecodeUnicode) {                
+            {unicodeArrayCallsWrapperName}.base64DecodeUnicode = function (str) {
                 var string = atob(str);
                 var string = atob(str);
                 var newStringChars = [];
                 var newStringChars = [];
                 
                 
@@ -29,11 +25,24 @@ export function UnicodeArrayRc4DecodeNodeTemplate (): string {
                 }
                 }
                 
                 
                 return decodeURIComponent(newStringChars);
                 return decodeURIComponent(newStringChars);
-            }
+            };
+        }
+                        
+        if (!{unicodeArrayCallsWrapperName}.data) {
+            {unicodeArrayCallsWrapperName}.data = {};
+        }
 
 
-            {selfDefendingCode}
+        if ({unicodeArrayCallsWrapperName}.data[index] === undefined) {
+            if (!{unicodeArrayCallsWrapperName}.once) {
+                {selfDefendingCode}
+                
+                {unicodeArrayCallsWrapperName}.once = true;
+            }
             
             
-            value = {unicodeArrayCallsWrapperName}.rc4(base64DecodeUnicode(value), key);
+            value = {unicodeArrayCallsWrapperName}.rc4(
+                {unicodeArrayCallsWrapperName}.base64DecodeUnicode(value), 
+                key
+            );
             {unicodeArrayCallsWrapperName}.data[index] = value;
             {unicodeArrayCallsWrapperName}.data[index] = value;
         } else {
         } else {
             value = {unicodeArrayCallsWrapperName}.data[index];
             value = {unicodeArrayCallsWrapperName}.data[index];