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


The following commit(s) were added to refs/heads/feature/requirejs-less by this 
push:
     new 4f1e2f759 TAP5-2810: fixing ES modules imports with function calls in 
AJAX request
4f1e2f759 is described below

commit 4f1e2f75984027b6607f3ab33bfc314c6926f3d6
Author: Thiago H. de Paula Figueiredo <thi...@arsmachina.com.br>
AuthorDate: Tue Jul 29 07:23:11 2025 -0300

    TAP5-2810: fixing ES modules imports with function calls in AJAX request
---
 .../internal/services/EsModuleInitsManager.java    | 13 ++++----
 .../services/PartialMarkupDocumentLinker.java      |  2 +-
 .../src/main/typescript/src/t5/core/pageinit.ts    | 35 ++++++++++++++++------
 .../assets/es-modules/app/multi-zone-update.js     |  5 ++++
 4 files changed, 40 insertions(+), 15 deletions(-)

diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java
index 04f3a2a67..96a01f1d0 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EsModuleInitsManager.java
@@ -76,14 +76,17 @@ public class EsModuleInitsManager
             {
                 final EsModuleInitializationImpl initImpl = 
(EsModuleInitializationImpl) init;
                 final JSONArray arguments = initImpl.getArguments();
+                final JSONArray initArray = new JSONArray();
+                
+                initArray.add(initImpl.getModuleName());
+                
                 if (arguments != null)
                 {
-                    list.add(new JSONArray(initImpl.getModuleName(), 
arguments));
-                }
-                else
-                {
-                    list.add(new JSONArray().put(initImpl.getModuleName()));
+                    initArray.addAll(arguments);
                 }
+                
+                list.add(initArray);
+                
             }
         }
         else
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
index ae0614459..7cd6a770a 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
@@ -116,7 +116,7 @@ public class PartialMarkupDocumentLinker implements 
DocumentLinker
             List<Object> allInits = new ArrayList<>(inits.size() + 
esModuleInits.size());
             allInits.addAll(inits);
             allInits.addAll(esModuleInits);
-            reply.in(InternalConstants.PARTIAL_KEY).put("inits", 
JSONArray.from(inits));
+            reply.in(InternalConstants.PARTIAL_KEY).put("inits", 
JSONArray.from(allInits));
         }
         
     }
diff --git a/tapestry-core/src/main/typescript/src/t5/core/pageinit.ts 
b/tapestry-core/src/main/typescript/src/t5/core/pageinit.ts
index 197af3680..85d13124c 100644
--- a/tapestry-core/src/main/typescript/src/t5/core/pageinit.ts
+++ b/tapestry-core/src/main/typescript/src/t5/core/pageinit.ts
@@ -111,15 +111,8 @@ const addStylesheets = function(newStylesheets: 
StylesheetLink) {
 const invokeInitializer = function(tracker: () => any, qualifiedName: string, 
initArguments: any[]) {
   const [moduleName, functionName] = Array.from(qualifiedName.split(':'));
 
-  // @ts-ignore
-  return require([moduleName], function(moduleLib: any) {
+  function executeInitializer(moduleLib: any) {
 
-    // If it's an AMD module generated by TypeScript and it has a default 
export,
-    // it gets wrapped, so we try to unwrap it here.
-    if (moduleLib != null && moduleLib.__esModule && moduleLib["default"] != 
null) {
-      moduleLib = moduleLib["default"];
-    }
-  
     try {
       // Some modules export nothing but do some full-page initialization, 
such as adding
       // event handlers to the body.
@@ -153,7 +146,31 @@ const invokeInitializer = function(tracker: () => any, 
qualifiedName: string, in
     } finally {
       tracker();
     }
-  });
+    
+  }
+
+  if (requireJsEnabled) {
+
+    // @ts-ignore
+    return require([moduleName], function(moduleLib: any) {
+
+      // If it's an AMD module generated by TypeScript and it has a default 
export,
+      // it gets wrapped, so we try to unwrap it here.
+      if (moduleLib != null && moduleLib.__esModule && moduleLib["default"] != 
null) {
+        moduleLib = moduleLib["default"];
+      }
+
+      return executeInitializer(moduleLib);
+    
+    });
+
+  } else {
+
+    return import(moduleName).then(function(moduleLib: any) {
+      return executeInitializer(moduleLib['default']);
+    });
+
+  }
 };
 
   // Pre-loads a number of libraries in order. When the last library is loaded,
diff --git 
a/tapestry-core/src/test/resources/META-INF/assets/es-modules/app/multi-zone-update.js
 
b/tapestry-core/src/test/resources/META-INF/assets/es-modules/app/multi-zone-update.js
new file mode 100644
index 000000000..411363128
--- /dev/null
+++ 
b/tapestry-core/src/test/resources/META-INF/assets/es-modules/app/multi-zone-update.js
@@ -0,0 +1,5 @@
+import dom from "t5/core/dom";
+
+export default function (id, message) {
+       dom(id).update(message);
+};
\ No newline at end of file

Reply via email to