Does it work? If so, go for it. -Alex
On 10/22/19, 12:55 PM, "Harbs" <[email protected]> wrote: Any objections to me merging this in? > On Oct 21, 2019, at 9:45 PM, Harbs <[email protected]> wrote: > > Can someone please look this over and make sure that my changes make sense? > > Please note, that with this commit, there are two Base64 classes, one uses direct string-to-string conversions, and the other uses BinaryData conversions which should theoretically be faster especially for a lot of data. > >> On Oct 21, 2019, at 9:43 PM, [email protected] wrote: >> >> This is an automated email from the ASF dual-hosted git repository. >> >> harbs pushed a commit to branch feature/issue-500 >> in repository https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.apache.org%2Frepos%2Fasf%2Froyale-asjs.git&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=PDAmBtqTqXGlIIStWsPN5kXExoQYQC1sF7sipgJwEaA%3D&reserved=0 >> >> commit cba39fbce2674e8d2b44756bff21bc215f933db6 >> Author: Harbs <[email protected]> >> AuthorDate: Mon Oct 21 21:41:55 2019 +0300 >> >> Fixed #500 >> --- >> LICENSE | 26 +++ >> .../main/royale/org/apache/royale/ace/ACEEditor.as | 2 +- >> .../projects/Core/src/main/royale/CoreClasses.as | 3 +- >> .../main/royale/org/apache/royale/utils/Base64.as | 200 +++++++++++++++++++++ >> .../MXRoyale/src/main/royale/MXRoyaleClasses.as | 7 - >> .../src/main/royale/mx/utils/Base64Decoder.as | 9 +- >> .../src/main/royale/mx/utils/Base64Encoder.as | 8 +- >> .../src/main/royale/mx/utils/Base64JSWrapper.as | 53 ------ >> .../main/royale/mx/utils/TextEncoderLiteWrapper.as | 52 ------ >> 9 files changed, 239 insertions(+), 121 deletions(-) >> >> diff --git a/LICENSE b/LICENSE >> index ee914c9..6ef80c3 100644 >> --- a/LICENSE >> +++ b/LICENSE >> @@ -368,3 +368,29 @@ SOFTWARE. >> Most of the .as files in frameworks/projects/Crux/src/main/royale >> are derived from the files in the Swiz framework which are available >> under Apache License 2.0. >> + >> +The file frameworks/projects/Core/src/main/royale/org/apache/royale/utils/Base64.as >> +is from https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsociodox.com%2Fbase64.html&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=TWKL%2Fau9D55evk8sQr3ZI8jgWqlOLcMxagGWTQniQIo%3D&reserved=0 which is available under an >> +MIT License. >> + >> +The MIT License (MIT) >> + >> +Copyright (C) 2012 Jean-Philippe Auclair >> + >> +Permission is hereby granted, free of charge, to any person obtaining a copy >> +of this software and associated documentation files (the "Software"), to deal >> +in the Software without restriction, including without limitation the rights >> +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell >> +copies of the Software, and to permit persons to whom the Software is >> +furnished to do so, subject to the following conditions: >> + >> +The above copyright notice and this permission notice shall be included in all >> +copies or substantial portions of the Software. >> + >> +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR >> +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, >> +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE >> +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER >> +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, >> +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE >> +SOFTWARE. >> diff --git a/frameworks/projects/Ace/src/main/royale/org/apache/royale/ace/ACEEditor.as b/frameworks/projects/Ace/src/main/royale/org/apache/royale/ace/ACEEditor.as >> index a194f78..3f42ad2 100644 >> --- a/frameworks/projects/Ace/src/main/royale/org/apache/royale/ace/ACEEditor.as >> +++ b/frameworks/projects/Ace/src/main/royale/org/apache/royale/ace/ACEEditor.as >> @@ -35,7 +35,7 @@ package org.apache.royale.ace >> { >> /** >> * <inject_html> >> - * <script src="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcdn.rawgit.com%2Fajaxorg%2Face-builds%2Fmaster%2Fsrc-min-noconflict%2Face.js&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=m14ZOHJSIW0B48HC4iaLUUv3GXXgptp4R1Ojwc05Kso%3D&reserved=0"></script> >> + * <script src="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Face%2F1.4.6%2Face.js&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=6lIhb9PbSPXP%2FyI3RAi7glVjrHIDzkjnnxWNAKEOdfs%3D&reserved=0"></script> >> * </inject_html> >> */ >> public function ACEEditor() >> diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as b/frameworks/projects/Core/src/main/royale/CoreClasses.as >> index 6d03a3b..650d0c6 100644 >> --- a/frameworks/projects/Core/src/main/royale/CoreClasses.as >> +++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as >> @@ -296,7 +296,8 @@ internal class CoreClasses >> >> import org.apache.royale.utils.array.rangeCheck; rangeCheck; >> >> - import org.apache.royale.utils.string.Base64; Base64; >> + import org.apache.royale.utils.string.Base64; org.apache.royale.utils.string.Base64; >> + import org.apache.royale.utils.Base64; org.apache.royale.utils.Base64; >> import org.apache.royale.utils.string.contains; contains; >> import org.apache.royale.utils.string.isWhitespace; isWhitespace; >> import org.apache.royale.utils.string.trim; trim; >> diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/Base64.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/Base64.as >> new file mode 100644 >> index 0000000..2cdc2d8 >> --- /dev/null >> +++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/Base64.as >> @@ -0,0 +1,200 @@ >> +//////////////////////////////////////////////////////////////////////////////// >> +// >> +// Licensed to the Apache Software Foundation (ASF) under one or more >> +// contributor license agreements. See the NOTICE file distributed with >> +// this work for additional information regarding copyright ownership. >> +// The ASF licenses this file to You under the Apache License, Version 2.0 >> +// (the "License"); you may not use this file except in compliance with >> +// the License. You may obtain a copy of the License at >> +// >> +// https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=McyyB0Daix8lEjWYvbjEFsf41Dy4GQ6qRPCfOLjzF2A%3D&reserved=0 >> +// >> +// Unless required by applicable law or agreed to in writing, software >> +// distributed under the License is distributed on an "AS IS" BASIS, >> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >> +// See the License for the specific language governing permissions and >> +// limitations under the License. >> +// >> +//////////////////////////////////////////////////////////////////////////////// >> + >> +/** >> + * Implementation derived from: >> + * https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsociodox.com%2Fbase64.html&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=TWKL%2Fau9D55evk8sQr3ZI8jgWqlOLcMxagGWTQniQIo%3D&reserved=0 >> + * available under MIT License. >> + * >> + * By: Jean-Philippe Auclair : https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fjpauclair.net&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=5UyEKi6OEYyTZeZKsA74r%2Bj8%2F7sl2umTlUj9dBUzEew%3D&reserved=0 >> + * Based on article: https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fjpauclair.net%2F2010%2F01%2F09%2Fbase64-optimized-as3-lib%2F&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=QAqq0I%2FNg6cmDH9EU4Snz%2FmDnPE%2B0cFUhOYiB2wmw3I%3D&reserved=0 >> + * Benchmark: >> + * This version: encode: 260ms decode: 255ms >> + * Blog version: encode: 322ms decode: 694ms >> + * as3Crypto encode: 6728ms decode: 4098ms >> + * >> + * Encode: com.sociodox.utils.Base64 is 25.8x faster than as3Crypto Base64 >> + * Decode: com.sociodox.utils.Base64 is 16x faster than as3Crypto Base64 >> + * >> + * Optimize & Profile any Flash content with TheMiner ( https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.sociodox.com%2Ftheminer&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=b9b1H4O%2FDm1xYDtlhbH7HcXs0J5VyNscYMjNp%2F%2BSFp4%3D&reserved=0 ) >> + */ >> + >> +package org.apache.royale.utils >> +{ >> + public class Base64 >> + { >> + >> + public static function encode(data:BinaryData):String >> + { >> + var out:BinaryData = new BinaryData(); >> + //Presetting the length keep the memory smaller and optimize speed since there is no "grow" needed >> + out.length = (2 + data.length - ((data.length + 2) % 3)) * 4 / 3; //Preset length //1.6 to 1.5 ms >> + var i:int = 0; >> + var r:int = data.length % 3; >> + var len:int = data.length - r; >> + var c:uint; //read (3) character AND write (4) characters >> + var outPos:int = 0; >> + while (i < len) >> + { >> + //Read 3 Characters (8bit * 3 = 24 bits) >> + c = data.readByteAt(int(i++)) << 16 | data.readByteAt(int(i++)) << 8 | data.readByteAt(int(i++)); >> + >> + out.writeByteAt(int(outPos++),encodeChars[int(c >>> 18)]); >> + out.writeByteAt(int(outPos++), encodeChars[int(c >>> 12 & 0x3f)]); >> + out.writeByteAt(int(outPos++), encodeChars[int(c >>> 6 & 0x3f)]); >> + out.writeByteAt(int(outPos++), encodeChars[int(c & 0x3f)]); >> + } >> + >> + if (r == 1) //Need two "=" padding >> + { >> + //Read one char, write two chars, write padding >> + c = data[int(i)]; >> + >> + out.writeByteAt(int(outPos++), encodeChars[int(c >>> 2)]); >> + out.writeByteAt(int(outPos++), encodeChars[int((c & 0x03) << 4)]); >> + out.writeByteAt(int(outPos++), 61); >> + out.writeByteAt(int(outPos++), 61); >> + } >> + else if (r == 2) //Need one "=" padding >> + { >> + c = data.readByteAt(int(i++)) << 8 | data.readByteAt(int(i)); >> + >> + out.writeByteAt(int(outPos++), encodeChars[int(c >>> 10)]); >> + out.writeByteAt(int(outPos++), encodeChars[int(c >>> 4 & 0x3f)]); >> + out.writeByteAt(int(outPos++), encodeChars[int((c & 0x0f) << 2)]); >> + out.writeByteAt(int(outPos++), 61); >> + } >> + >> + return out.readUTFBytes(out.length); >> + } >> + >> + public static function decode(str:String):BinaryData >> + { >> + var c1:int; >> + var c2:int; >> + var c3:int; >> + var c4:int; >> + var i:int = 0; >> + var len:int = str.length; >> + >> + var byteString:BinaryData = new BinaryData(); >> + byteString.writeUTFBytes(str); >> + var outPos:int = 0; >> + while (i < len) >> + { >> + //c1 >> + c1 = decodeChars[int(byteString.readByteAt(i++))]; >> + if (c1 == -1) >> + break; >> + >> + //c2 >> + c2 = decodeChars[int(byteString.readByteAt(i++))]; >> + if (c2 == -1) >> + break; >> + >> + byteString.writeByteAt(int(outPos++), (c1 << 2) | ((c2 & 0x30) >> 4)); >> + >> + //c3 >> + c3 = byteString.readByteAt(int(i++)); >> + if (c3 == 61) >> + { >> + byteString.length = outPos >> + return byteString; >> + } >> + >> + c3 = decodeChars[int(c3)]; >> + if (c3 == -1) >> + break; >> + >> + byteString.writeByteAt(int(outPos++), ((c2 & 0x0f) << 4) | ((c3 & 0x3c) >> 2)); >> + >> + //c4 >> + c4 = byteString.readByteAt(int(i++)); >> + if (c4 == 61) >> + { >> + byteString.length = outPos >> + return byteString; >> + } >> + >> + c4 = decodeChars[int(c4)]; >> + if (c4 == -1) >> + break; >> + >> + byteString.writeByteAt(int(outPos++), ((c3 & 0x03) << 6) | c4); >> + } >> + byteString.length = outPos; >> + byteString.position = 0; >> + return byteString; >> + } >> + >> + public static function InitEncoreChar():Vector.<int> >> + { >> + var encodeChars:Vector.<int> = new Vector.<int>(64, true); >> + >> + // We could push the number directly >> + // but I think it's nice to see the characters (with no overhead on encode/decode) >> + var chars:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; >> + for (var i:int = 0; i < 64; i++) >> + { >> + encodeChars[i] = chars.charCodeAt(i); >> + } >> + >> + return encodeChars; >> + } >> + >> + public static function InitDecodeChar():Vector.<int> >> + { >> + >> + var decodeChars:Vector.<int> = new <int>[ >> + -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, >> + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, >> + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, >> + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, >> + -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, >> + -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, -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, -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]; >> + >> + return decodeChars; >> + } >> + private static var _encodeChars:Vector.<int>; >> + private static function get encodeChars():Vector.<int>{ >> + if(!_encodeChars){ >> + _encodeChars = InitEncoreChar(); >> + } >> + return _encodeChars; >> + } >> + private static var _decodeChars:Vector.<int>; >> + private static function get decodeChars():Vector.<int>{ >> + if(!_decodeChars){ >> + _decodeChars = InitDecodeChar(); >> + } >> + return _decodeChars; >> + } >> + >> + } >> +} >> \ No newline at end of file >> diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as >> index ed82485..19991fd 100644 >> --- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as >> +++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as >> @@ -213,13 +213,6 @@ internal class MXRoyaleClasses >> import mx.controls.PopUpButton; PopUpButton; >> import mx.controls.PopUpMenuButton; PopUpMenuButton; >> >> - >> - COMPILE::JS >> - { >> - import mx.utils.TextEncoderLiteWrapper; TextEncoderLiteWrapper; >> - import mx.utils.Base64JSWrapper; Base64JSWrapper; >> - } >> - >> COMPILE::SWF >> { >> import mx.controls.beads.CSSImageAndTextButtonView; CSSImageAndTextButtonView; >> diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Decoder.as b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Decoder.as >> index 2a718d8..b9a8c25 100644 >> --- a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Decoder.as >> +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Decoder.as >> @@ -21,6 +21,8 @@ package mx.utils >> { >> >> import mx.utils.ByteArray; >> +import org.apache.royale.utils.Base64; >> +import org.apache.royale.utils.BinaryData; >> >> /* >> import mx.resources.IResourceManager; >> @@ -87,10 +89,9 @@ public class Base64Decoder >> COMPILE::JS >> public function decode(data:String):String >> { >> - >> - var bytes:Object = new Base64JSWrapper().toByteArray(data); >> - decodedString = new TextEncoderLiteWrapper('utf-8').decode(bytes); >> - >> + var bytes:BinaryData = Base64.decode(data); >> + bytes.readUTFBytes(bytes.length); >> + decodedString = bytes.readUTFBytes(bytes.length); >> return decodedString; >> } >> >> diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Encoder.as b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Encoder.as >> index 8ea8349..4b04d17 100644 >> --- a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Encoder.as >> +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64Encoder.as >> @@ -21,6 +21,8 @@ package mx.utils >> { >> >> import mx.utils.ByteArray; >> +import org.apache.royale.utils.BinaryData; >> +import org.apache.royale.utils.Base64; >> >> >> /** >> @@ -138,9 +140,9 @@ public class Base64Encoder >> COMPILE::JS >> public function encode(data:String, encoding:String = "utf-8"):void >> { >> - var bytes:Object = new TextEncoderLiteWrapper(encoding).encode(data); >> - encodedString = new Base64JSWrapper().fromByteArray(bytes); >> - >> + var bytes:BinaryData = new BinaryData(); >> + bytes.writeUTFBytes(data); >> + encodedString = Base64.encode(bytes); >> } >> >> /** >> diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64JSWrapper.as b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64JSWrapper.as >> deleted file mode 100644 >> index f3f94a0..0000000 >> --- a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/Base64JSWrapper.as >> +++ /dev/null >> @@ -1,53 +0,0 @@ >> -//////////////////////////////////////////////////////////////////////////////// >> -// >> -// Licensed to the Apache Software Foundation (ASF) under one or more >> -// contributor license agreements. See the NOTICE file distributed with >> -// this work for additional information regarding copyright ownership. >> -// The ASF licenses this file to You under the Apache License, Version 2.0 >> -// (the "License"); you may not use this file except in compliance with >> -// the License. You may obtain a copy of the License at >> -// >> -// https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=McyyB0Daix8lEjWYvbjEFsf41Dy4GQ6qRPCfOLjzF2A%3D&reserved=0 >> -// >> -// Unless required by applicable law or agreed to in writing, software >> -// distributed under the License is distributed on an "AS IS" BASIS, >> -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >> -// See the License for the specific language governing permissions and >> -// limitations under the License. >> -// >> -//////////////////////////////////////////////////////////////////////////////// >> -package mx.utils >> -{ >> - COMPILE::JS >> - public class Base64JSWrapper >> - { >> - /** >> - * The Royale Compiler will inject html into the index.html file. Surround with >> - * "inject_html" tag as follows: >> - * >> - * <inject_html> >> - * <script type="text/javascript" src="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Frawgit.com%2Fbeatgammit%2Fbase64-js%2Fmaster%2Fbase64js.min.js&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=zeOiBBec%2Fimh1Ke4sW8Xp62i2oISJJhZThMnvZ5rRI8%3D&reserved=0"></script> >> - * </inject_html> >> - */ >> - public function Base64JSWrapper() >> - { >> - } >> - >> - public function fromByteArray(bytes:Object):String >> - { >> - var base64js:Object = window["base64js"]; >> - >> - return base64js["fromByteArray"](bytes); >> - >> - } >> - >> - public function toByteArray(b64Str:String):Object >> - { >> - var base64js:Object = window["base64js"]; >> - >> - return base64js["toByteArray"](b64Str); >> - >> - } >> - >> - } >> -} >> \ No newline at end of file >> diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/TextEncoderLiteWrapper.as b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/TextEncoderLiteWrapper.as >> deleted file mode 100644 >> index f0c209c..0000000 >> --- a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/TextEncoderLiteWrapper.as >> +++ /dev/null >> @@ -1,52 +0,0 @@ >> -//////////////////////////////////////////////////////////////////////////////// >> -// >> -// Licensed to the Apache Software Foundation (ASF) under one or more >> -// contributor license agreements. See the NOTICE file distributed with >> -// this work for additional information regarding copyright ownership. >> -// The ASF licenses this file to You under the Apache License, Version 2.0 >> -// (the "License"); you may not use this file except in compliance with >> -// the License. You may obtain a copy of the License at >> -// >> -// https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.apache.org%2Flicenses%2FLICENSE-2.0&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=McyyB0Daix8lEjWYvbjEFsf41Dy4GQ6qRPCfOLjzF2A%3D&reserved=0 >> -// >> -// Unless required by applicable law or agreed to in writing, software >> -// distributed under the License is distributed on an "AS IS" BASIS, >> -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. >> -// See the License for the specific language governing permissions and >> -// limitations under the License. >> -// >> -//////////////////////////////////////////////////////////////////////////////// >> -package mx.utils >> -{ >> - COMPILE::JS >> - public class TextEncoderLiteWrapper >> - { >> - private var _encoding:String; >> - >> - /** >> - * The Royale Compiler will inject html into the index.html file. Surround with >> - * "inject_html" tag as follows: >> - * >> - * <inject_html> >> - * <script type="text/javascript" src="https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Frawgit.com%2Fcoolaj86%2FTextEncoderLite%2Fmaster%2Ftext-encoder-lite.min.js&data=02%7C01%7Caharui%40adobe.com%7C535b3b63d0bd4da3761508d75729c301%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637073709193668210&sdata=oCQl4%2BrfuYMTmvgtJcO6F3QTzaZEYo2P%2FuHjwSPKDU8%3D&reserved=0"></script> >> - * </inject_html> >> - */ >> - public function TextEncoderLiteWrapper(encoding:String = "utf-8") >> - { >> - _encoding = encoding ; >> - } >> - >> - public function encode(data:String):Object >> - { >> - return new (TextEncoder)(_encoding).encode(data); >> - >> - } >> - >> - public function decode(data:Object):String >> - { >> - return new (TextDecoder)(_encoding).decode(data); >> - >> - } >> - >> - } >> -} >> \ No newline at end of file >> >
