This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a commit to branch feature/requirejs-less
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit 74120c30f88637b92515e282fd0e48a9c9754f00
Author: Thiago H. de Paula Figueiredo <[email protected]>
AuthorDate: Sun Jul 27 20:23:56 2025 -0300

    TAP5-2810: fixing ES modules imports with function calls
---
 .../services/javascript/EsModuleManagerImpl.java   | 22 ++++----
 .../apache/tapestry5/modules/JavaScriptModule.java | 58 +++++++++++++---------
 2 files changed, 48 insertions(+), 32 deletions(-)

diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/EsModuleManagerImpl.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/EsModuleManagerImpl.java
index 6c56cbf52..b0f4090d2 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/EsModuleManagerImpl.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/EsModuleManagerImpl.java
@@ -281,22 +281,26 @@ public class EsModuleManagerImpl implements 
EsModuleManager
             // If we have not only the import, but also an automatic function 
call
             if (arguments != null || functionName != null)
             {
+                
+                // TODO: move this logic to a pageinit call, like AMD does
+                // t5/core/pageinit:loadLibrariesAndInitialize
                 final Element moduleFunctionCall = script.element("script");
                 
                 moduleFunctionCall.moveAfter(script);
                 
                 final String moduleFunctionCallFormat = 
-                        "import %s from '%s';\n"
-                        + "%s(%s);";
-                
-                final String importName = functionName != null ? functionName 
: GENERIC_IMPORTED_VARIABLE;
-                final String importDeclaration = functionName != null ? 
-                        "{ " + functionName + " }": 
-                            GENERIC_IMPORTED_VARIABLE;
+                        "import m from '%s';\n"
+                        + "import console from 't5/core/console';\n"
+                        + "\nif (console.debugEnabled) {"
+                        + "\n    console.debug('Invoking %1$s:%2$s(' + 
(Array.from(%4$s).map(function(arg) { return JSON.stringify(arg); })).join(\", 
\") + ')');"
+                        + "\n    m.%2$s(%3$s);" 
+                        + "\n}\n";
                 
                 
moduleFunctionCall.text(String.format(moduleFunctionCallFormat, 
-                        importDeclaration, moduleId, importName,
-                        convertToJsFunctionParameters(arguments, 
compactJSON)));
+                        moduleId, 
+                        functionName,
+                        convertToJsFunctionParameters(arguments, compactJSON),
+                        arguments));
                 
                 writeAttributes(moduleFunctionCall, init);
                 
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
index 3ea83348c..cbf0120a9 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
@@ -556,28 +556,28 @@ public class JavaScriptModule
         }
     }
     
-    @Contribute(EsModuleManager.class)
-    public static void 
setupApplicationCatalogEsModules(OrderedConfiguration<EsModuleManagerContribution>
 configuration,
-                                                        LocalizationSetter 
localizationSetter,
-                                                        
ComponentMessagesSource messagesSource,
-                                                        ResourceChangeTracker 
resourceChangeTracker,
-                                                        
@Symbol(SymbolConstants.COMPACT_JSON) boolean compactJSON)
-    {
-        
-        EsModuleConfigurationCallback callback = jsonObject -> {
-        
-            for (Locale locale : localizationSetter.getSupportedLocales())
-            {
-                MessageCatalogResource resource = new 
MessageCatalogResource(false, locale, messagesSource, resourceChangeTracker, 
compactJSON);
-    
-                jsonObject.put("t5/core/messages/" + locale.toString(), 
resource.toURL());
-            }
-            
-        };
-        
-        configuration.add("ApplicationCatalog", 
EsModuleManagerContribution.base(callback));
-        
-    }
+//    @Contribute(EsModuleManager.class)
+//    public static void 
setupApplicationCatalogEsModules(OrderedConfiguration<EsModuleManagerContribution>
 configuration,
+//                                                        LocalizationSetter 
localizationSetter,
+//                                                        
ComponentMessagesSource messagesSource,
+//                                                        
ResourceChangeTracker resourceChangeTracker,
+//                                                        
@Symbol(SymbolConstants.COMPACT_JSON) boolean compactJSON)
+//    {
+//        
+//        EsModuleConfigurationCallback callback = jsonObject -> {
+//        
+//            for (Locale locale : localizationSetter.getSupportedLocales())
+//            {
+//                MessageCatalogResource resource = new 
MessageCatalogResource(false, locale, messagesSource, resourceChangeTracker, 
compactJSON);
+//    
+//                jsonObject.put("t5/core/messages/" + locale.toString(), 
resource.toURL());
+//            }
+//            
+//        };
+//        
+//        configuration.add("ApplicationCatalog", 
EsModuleManagerContribution.base(callback));
+//        
+//    }
 
     @Contribute(EsShimManager.class)
     public static void setupBaseEsShims(
@@ -587,7 +587,11 @@ public class JavaScriptModule
             @Path("${tapestry.asset.root}/bootstrap4/js/bootstrap-util.js")
             Resource bootstrapUtil,
             Compatibility compatibility,
-            AssetSource assetSource)
+            AssetSource assetSource,
+            LocalizationSetter localizationSetter,
+            ComponentMessagesSource messagesSource,
+            ResourceChangeTracker resourceChangeTracker,
+            @Symbol(SymbolConstants.COMPACT_JSON) boolean compactJSON)
     {
         
         final Resource jQuery = 
assetSource.getClasspathAsset("/META-INF/assets/tapestry5/jquery.js")
@@ -647,6 +651,14 @@ public class JavaScriptModule
             final String[] modules = new String[]{"alert", "dropdown", 
"collapse"};
             addBootstrap3EsShims(configuration, modules, transition);
         }
+        
+        for (Locale locale : localizationSetter.getSupportedLocales())
+        {
+            MessageCatalogResource resource = new MessageCatalogResource(true, 
locale, messagesSource, resourceChangeTracker, compactJSON);
+            configuration.add("t5/core/messages/" + locale.toString(),
+                    new EsShim(resource).getResource());
+        }
+        
     }
 
     @Contribute(EsModuleManager.class)

Reply via email to