Thanks for responding.

Yes. I tried to add the definitions here.

https://github.com/apache/royale-typedefs/tree/feature/sanitize/GCL/src/main/royale/goog/html
 
<https://github.com/apache/royale-typedefs/tree/feature/sanitize/GCL/src/main/royale/goog/html>

It helped to get the type definitions in 
https://github.com/apache/royale-asjs/blob/1b12594c60420d3503f9e366f314c9d875e16ddb/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
 
<https://github.com/apache/royale-asjs/blob/1b12594c60420d3503f9e366f314c9d875e16ddb/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as>

But the goog.html files were not referenced in the JS output. I also changed 
the script that extracts the goog js files, but that did not help.

Basically, GCL is like a regular swc library in that JS files are needed, but 
it’s like a typedef file in that the JS doesn’t come from the swc (IFAICT). I’m 
struggling to understand how the compiler builds the dependencies from GCL.swc…

Thanks,
Harbs

> On Dec 14, 2021, at 8:11 PM, Josh Tynjala <joshtynj...@bowlerhat.dev> wrote:
> 
> It looks like the GCL typedefs are defined here:
> 
> https://github.com/apache/royale-typedefs/tree/develop/GCL/src/main/royale/goog
> 
> I think that so far we've included only the classes that we use in the
> framework, so if you need something that we haven't used before, you can
> add it here. It'll get included in the GCL .swc file, and then you can use
> it in AS3/MXML.
> 
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev>
> 
> 
> On Tue, Dec 14, 2021 at 9:42 AM Harbs <harbs.li...@gmail.com> wrote:
> 
>> Bump.
>> 
>> I’m stuck on this issue. I need to understand how the GCL library works
>> for me to finish the sanitize functions.
>> 
>> Thanks,
>> Harbs
>> 
>>> On Dec 13, 2021, at 2:50 PM, Harbs <harbs.li...@gmail.com> wrote:
>>> 
>>> I created a page about swcs:
>> https://apache.github.io/royale-docs/libraries/library-basics <
>> https://apache.github.io/royale-docs/libraries/library-basics>
>>> 
>>> I added a paragraph about the GCL swc, but I’m really not very clear on
>> how it works...
>>> 
>>>> On Dec 12, 2021, at 5:46 PM, Harbs <harbs.li...@gmail.com <mailto:
>> harbs.li...@gmail.com>> wrote:
>>>> 
>>>> I spent some more time on this, but I’m not sure how to get the
>> compiler to realize that we need the goog files.
>>>> 
>>>> For Event we have this:
>>>> 
>>>> goog.addDependency('../../../org/apache/royale/events/Event.js',
>> ['org.apache.royale.events.Event'], ['goog.events.Event',
>> 'org.apache.royale.events.IRoyaleEvent']);
>>>> 
>>>> But Royale Event subclasses goog.events.Event.
>>>> 
>>>> How do I tell the compiler that
>> org.apache.royale.utils.string.sanitizeUrl requires goog.html.SafeUrl ?
>>>> 
>>>> The same for org.apache.royale.utils.string.sanitizeHtml with
>> goog.html.sanitizer.HtmlSanitizer and goog.html.SafeHtml.
>>>> 
>>>> Alex? Josh? Greg?
>>>> 
>>>> Thanks,
>>>> Harbs
>>>> 
>>>>> On Dec 12, 2021, at 2:13 AM, Harbs <harbs.li...@gmail.com <mailto:
>> harbs.li...@gmail.com>> wrote:
>>>>> 
>>>>> I added code for sanitizing, but it’s not working because the
>> goog.html files are not being copied. I don’t know what needs to be done to
>> make that happen.
>>>>> 
>>>>> Harbs
>>>>> 
>>>>>> On Dec 12, 2021, at 2:12 AM, ha...@apache.org <mailto:
>> ha...@apache.org> wrote:
>>>>>> 
>>>>>> This is an automated email from the ASF dual-hosted git repository.
>>>>>> 
>>>>>> harbs pushed a commit to branch feature/sanitize
>>>>>> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git <
>> https://gitbox.apache.org/repos/asf/royale-asjs.git>
>>>>>> 
>>>>>> commit 1b12594c60420d3503f9e366f314c9d875e16ddb
>>>>>> Author: Harbs <ha...@in-tools.com <mailto:ha...@in-tools.com>>
>>>>>> AuthorDate: Sun Dec 12 02:12:05 2021 +0200
>>>>>> 
>>>>>> Added sanitizeUrl and sanitizeHtml
>>>>>> ---
>>>>>> .../projects/Core/src/main/royale/CoreClasses.as   |  2 +
>>>>>> .../org/apache/royale/utils/string/sanitizeHtml.as | 38 ++++++++++++++
>>>>>> .../org/apache/royale/utils/string/sanitizeUrl.as  | 36 +++++++++++++
>>>>>> .../src/test/royale/flexUnitTests/CoreTester.as    |  1 +
>>>>>> .../{CoreTester.as => SanitizeTest.as}             | 59
>> ++++++++++++++--------
>>>>>> 5 files changed, 115 insertions(+), 21 deletions(-)
>>>>>> 
>>>>>> diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as
>> b/frameworks/projects/Core/src/main/royale/CoreClasses.as
>>>>>> index 21593fd..dd088eb 100644
>>>>>> --- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
>>>>>> +++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
>>>>>> @@ -342,6 +342,8 @@ internal class CoreClasses
>>>>>>   import org.apache.royale.utils.string.trimRight; trimRight;
>>>>>>   import org.apache.royale.utils.string.trimLeft; trimLeft;
>>>>>>   import org.apache.royale.utils.string.cacheBust; cacheBust;
>>>>>> +  import org.apache.royale.utils.string.sanitizeHtml; sanitizeHtml;
>>>>>> +  import org.apache.royale.utils.string.sanitizeUrl; sanitizeUrl;
>>>>>> 
>>>>>>   import org.apache.royale.utils.date.addDays; addDays;
>>>>>>   import org.apache.royale.utils.date.addHours; addHours;
>>>>>> diff --git
>> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
>>>>>> new file mode 100644
>>>>>> index 0000000..360ef63
>>>>>> --- /dev/null
>>>>>> +++
>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeHtml.as
>>>>>> @@ -0,0 +1,38 @@
>>>>>> 
>> +////////////////////////////////////////////////////////////////////////////////
>>>>>> +//
>>>>>> +//  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
>>>>>> +//
>>>>>> +//      http://www.apache.org/licenses/LICENSE-2.0 <
>> http://www.apache.org/licenses/LICENSE-2.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 org.apache.royale.utils.string
>>>>>> +{
>>>>>> +  COMPILE::JS{
>>>>>> +          import goog.html.sanitizer.HtmlSanitizer;
>>>>>> +          import goog.html.SafeHtml;
>>>>>> +  }
>>>>>> +
>>>>>> +  public function sanitizeHtml(html:String):String
>>>>>> +  {
>>>>>> +          COMPILE::JS
>>>>>> +          {
>>>>>> +                  return
>> SafeHtml.unwrap(HtmlSanitizer.sanitize(html));
>>>>>> +          }
>>>>>> +          //TODO sanitize in swf
>>>>>> +          COMPILE::SWF
>>>>>> +          {
>>>>>> +                  return html;
>>>>>> +          }
>>>>>> +  }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>> diff --git
>> a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeUrl.as
>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeUrl.as
>>>>>> new file mode 100644
>>>>>> index 0000000..cd4151d
>>>>>> --- /dev/null
>>>>>> +++
>> b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/string/sanitizeUrl.as
>>>>>> @@ -0,0 +1,36 @@
>>>>>> 
>> +////////////////////////////////////////////////////////////////////////////////
>>>>>> +//
>>>>>> +//  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
>>>>>> +//
>>>>>> +//      http://www.apache.org/licenses/LICENSE-2.0 <
>> http://www.apache.org/licenses/LICENSE-2.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 org.apache.royale.utils.string
>>>>>> +{
>>>>>> +  COMPILE::JS{
>>>>>> +          import goog.html.SafeUrl;
>>>>>> +          import goog.html.SafeUrl;
>>>>>> +  }
>>>>>> +  public function sanitizeUrl(url:String):String
>>>>>> +  {
>>>>>> +          COMPILE::JS{
>>>>>> +                  return SafeUrl.unwrap(SafeUrl.sanitize(url));
>>>>>> +          }
>>>>>> +
>>>>>> +          //TODO sanitize in swf
>>>>>> +          COMPILE::SWF{
>>>>>> +                  return url;
>>>>>> +          }
>>>>>> +  }
>>>>>> +}
>>>>>> \ No newline at end of file
>>>>>> diff --git
>> a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>> b/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>>>>> index c8adc02..9441daf 100644
>>>>>> ---
>> a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>>>>> +++
>> b/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>>>>> @@ -42,5 +42,6 @@ package flexUnitTests
>>>>>>      public var keyConverterTest:KeyConverterTest;
>>>>>>      public var
>> keyboardEventConverterTest:KeyboardEventConverterTest;
>>>>>>      public var stringUtilsTest:StringUtilsTest;
>>>>>> +        public var sanitizerTest:SanitizeTest;
>>>>>>  }
>>>>>> }
>>>>>> diff --git
>> a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>> b/frameworks/projects/Core/src/test/royale/flexUnitTests/SanitizeTest.as
>>>>>> similarity index 50%
>>>>>> copy from
>> frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>>>>> copy to
>> frameworks/projects/Core/src/test/royale/flexUnitTests/SanitizeTest.as
>>>>>> index c8adc02..7173f52 100644
>>>>>> ---
>> a/frameworks/projects/Core/src/test/royale/flexUnitTests/CoreTester.as
>>>>>> +++
>> b/frameworks/projects/Core/src/test/royale/flexUnitTests/SanitizeTest.as
>>>>>> @@ -18,29 +18,46 @@
>>>>>> 
>> ////////////////////////////////////////////////////////////////////////////////
>>>>>> package flexUnitTests
>>>>>> {
>>>>>> -    import flexUnitTests.language.*
>>>>>> +    import org.apache.royale.utils.string.*;
>>>>>> +    import org.apache.royale.test.asserts.*;
>>>>>> 
>>>>>> -    [Suite]
>>>>>> -    [RunWith("org.apache.royale.test.runners.SuiteRunner")]
>>>>>> -    public class CoreTester
>>>>>> -    {
>>>>>> +    public class SanitizeTest
>>>>>> +    {
>>>>>> +        [Before]
>>>>>> +        public function setUp():void
>>>>>> +        {
>>>>>> +        }
>>>>>> 
>>>>>> -        //language tests
>>>>>> -        public var languageTestIs:LanguageTesterTestIs;
>>>>>> -        public var languageTestIntUint:LanguageTesterIntUint;
>>>>>> -        public var languageTestVector:LanguageTesterTestVector;
>>>>>> -        public var languageTestClass:LanguageTesterTestClass;
>>>>>> -        public var
>> languageTestLoopVariants:LanguageTesterTestLoopVariants;
>>>>>> -        public var languageTestArraySort:LanguageTesterArraySort;
>>>>>> -        public var languageTesttryCatch:LanguageTesterTestTryCatch;
>>>>>> +        [After]
>>>>>> +        public function tearDown():void
>>>>>> +        {
>>>>>> +        }
>>>>>> 
>>>>>> -        //core tests
>>>>>> -        public var strandTesterTest:StrandTesterTest;
>>>>>> -          public var binaryDataTesterTest:BinaryDataTesterTest;
>>>>>> -          public var arrayUtilsTest:ArrayUtilsTest;
>>>>>> -          public var dateUtilsTest:DateUtilsTest;
>>>>>> -        public var keyConverterTest:KeyConverterTest;
>>>>>> -        public var
>> keyboardEventConverterTest:KeyboardEventConverterTest;
>>>>>> -        public var stringUtilsTest:StringUtilsTest;
>>>>>> +        [BeforeClass]
>>>>>> +        public static function setUpBeforeClass():void
>>>>>> +        {
>>>>>> +        }
>>>>>> +
>>>>>> +        [AfterClass]
>>>>>> +        public static function tearDownAfterClass():void
>>>>>> +        {
>>>>>> +        }
>>>>>> +
>>>>>> +        [Test]
>>>>>> +        public function testHTML():void
>>>>>> +        {
>>>>>> +            var safeHtml:String = 'Hello <em>World</em>';
>>>>>> +            assertEquals(safeHtml, sanitizeHtml(safeHtml));
>>>>>> +        }
>>>>>> +
>>>>>> +        [Test]
>>>>>> +        public function testUrl():void
>>>>>> +        {
>>>>>> +            var safeUrl:String = "https://foobaz.com <
>> https://foobaz.com/>"
>>>>>> +            assertEquals(safeUrl, sanitizeUrl(safeUrl));
>>>>>> +        }
>>>>>> +
>>>>>> +
>>>>>> +
>>>>>>  }
>>>>>> }
>>>>> 
>>>> 
>>> 
>> 
>> 

Reply via email to