From a33bef01b955171d0351447b3b0c86af907304b3 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sun, 30 Oct 2016 23:08:51 +0300 Subject: [PATCH] decode functions now ie8 compatible --- README.md | 2 +- dist/index.js | 4 ++-- .../UnicodeArrayBase64DecodeNodeTemplate.ts | 11 ++++++++--- .../UnicodeArrayRC4DecodeNodeTemplate.ts | 13 +++++++++---- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6066dcbc..61f7b5b5 100644 --- a/README.md +++ b/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` diff --git a/dist/index.js b/dist/index.js index 3e5bd19a..6b08a5bb 100644 --- a/dist/index.js +++ b/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; diff --git a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayBase64DecodeNodeTemplate.ts b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayBase64DecodeNodeTemplate.ts index 5cf77409..ba63ca89 100644 --- a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayBase64DecodeNodeTemplate.ts +++ b/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} diff --git a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayRC4DecodeNodeTemplate.ts b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayRC4DecodeNodeTemplate.ts index 249fe708..c31df61d 100644 --- a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayRC4DecodeNodeTemplate.ts +++ b/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);