OK.

> On Jan 13, 2022, at 12:37 AM, Alex Harui <[email protected]> wrote:
> 
> The problem is that some output might look like this:
>  
> bar.Foo.prototype.ROYALE_CLASS_INFO = { name: “Foo”. qName: “bar.Foo” };
>  
> And the minifier will rename qName in the output differently in the main app 
> vs the module:
>  
> In the main app:
> bar.Foo..prototype.ROYALE_CLASS_INFO = { name: “Foo”. a: “bar.Foo” };
>  
> In a module:
> bar.Baz..prototype.ROYALE_CLASS_INFO = { name: “Baz”. c: “bar.Baz” };
>  
> Code that accesses someObj.ROYALE_CLASS_INFO.qName in the main app will do:
>  
> Var qName = someObj.ROYALE_CLASS_INFO.a;
>  
> And that won’t work for objects in the module that are using ‘c’ for QName.
>  
> If you turn on -js-dynamic-access-unknown-members when building the SWCs, 
> then these patterns in the SWC will look like:
>  
> bar.Foo.prototype.ROYALE_CLASS_INFO = { name: “Foo”. ‘qName’: “bar.Foo” };
>  
> But then every user of the SWC will never get qName renamed, which wastes 
> bytes.  So I think we want to not use -js-dynamic-access-unknown-members when 
> building SWCs.
>  
> So the -prevent-rename-object-keys option I added is only turned on for 
> certain keys when building a module or a main app that loads a module.  For 
> the simple Module example, we only needed to prevent renaming of the 
> following keys:
> cssData, _bindings, ROYALE_CLASS_INFO, superClass_, qName
>  
> The Royale compiler copies JS files from the SWCs to bin/js-debug.  What this 
> option does is filter each file as it is copied, modifying the code for the 
> keys.  We’re already scanning every line in those files anyway in 
> GoogDepsWriter.  That way folks not building apps with modules get maximum 
> renaming and only those needing to prevent renaming in their output can 
> prevent that renaming.
>  
> We’ll see if that holds up well for Roman.  There was some additional hacking 
> in the compiler since superclass_ is in base.js and not in our SWCs, so that 
> file and key was special cased.  Will there be more?  Also I special cased 
> Language.is/as/closure <http://language.is/as/closure> as they are not 
> unknown members but are not exported and can be renamed in most apps but need 
> to not be renamed for module and apps loading modules.
>  
> You might find it useful to shave off a few bytes in your app where you don’t 
> really want ALL unknown members to not be renamed.  This option can let you 
> specify just the list of members that matter.
>  
> HTH,
> -Alex
>  
>  
> From: Harbs <[email protected]>
> Reply-To: "[email protected]" <[email protected]>
> Date: Wednesday, January 12, 2022 at 2:13 PM
> To: "[email protected]" <[email protected]>
> Subject: Re: Compiling Modules (was Re: Load time is very slow)
>  
> Didn’t totally grok what you said.
>  
> Can you give a practical difference in when it would be used?
> 
> 
>> On Jan 12, 2022, at 7:39 PM, Alex Harui <[email protected] 
>> <mailto:[email protected]>> wrote:
>>  
>> The option I added takes a list of members and post-processes.  I think all 
>> other options change what is output during the compilation and 
>> -js-dynamic-access-unknown-members doesn’t take a list of members.
>>  
>> -Alex
>>  
>> From: Harbs <[email protected] <mailto:[email protected]>>
>> Reply-To: "[email protected] <mailto:[email protected]>" 
>> <[email protected] <mailto:[email protected]>>
>> Date: Wednesday, January 12, 2022 at 2:30 AM
>> To: "[email protected] <mailto:[email protected]>" 
>> <[email protected] <mailto:[email protected]>>
>> Subject: Re: Compiling Modules (was Re: Load time is very slow)
>>  
>> How is this different than -js-dynamic-access-unknown-members?
>> 
>> 
>> 
>>> On Jan 12, 2022, at 10:04 AM, Alex Harui <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>>  
>>>  I added a -prevent-rename-object-keys compiler option that works as a 
>>> post-processor.  It scans the js files being copied into bin/js-debug and 
>>> adds quotes around things.

Reply via email to