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

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


The following commit(s) were added to refs/heads/master by this push:
     new 78194aa90 TAP5-2803: .mjs files should also be considered ES modules
78194aa90 is described below

commit 78194aa9043767c91873c24170caa8fc8610ec43
Author: Thiago H. de Paula Figueiredo <thi...@arsmachina.com.br>
AuthorDate: Tue May 6 11:19:28 2025 -0300

    TAP5-2803: .mjs files should also be considered ES modules
---
 .../internal/services/javascript/EsModuleManagerImpl.java     | 11 +++++++----
 .../org/apache/tapestry5/integration/app1/EsModuleTests.java  |  1 +
 .../apache/tapestry5/integration/app1/pages/EsModuleDemo.java |  2 +-
 .../src/test/resources/META-INF/assets/es-modules/suffix.mjs  |  2 ++
 .../apache/tapestry5/integration/app1/pages/EsModuleDemo.tml  |  1 +
 5 files changed, 12 insertions(+), 5 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 97f95a554..c383608a6 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
@@ -108,7 +108,7 @@ public class EsModuleManagerImpl implements EsModuleManager
         
         importMap = new JSONObject();
 
-        extensions = CollectionFactory.newSet("js");
+        extensions = CollectionFactory.newSet("js", "mjs");
         
extensions.addAll(streamableResourceSource.fileExtensionsForContentType(InternalConstants.JAVASCRIPT_CONTENT_TYPE));
         
         createImportMap();
@@ -176,9 +176,12 @@ public class EsModuleManagerImpl implements EsModuleManager
         executeCallbacks(newImportMap, moduleConfigurationCallbacks);
         executeCallbacks(newImportMap, globalPerRequestCallbacks);
         
-        head.element("script")
-                .attribute("type", "importmap")
-                .text(newImportMap.toString(compactJSON));
+        if (!newImportMap.in(IMPORTS_ATTRIBUTE).isEmpty())
+        {
+            head.element("script")
+                    .attribute("type", "importmap")
+                    .text(newImportMap.toString(compactJSON));
+        }
     }
         
     @Override
diff --git 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/EsModuleTests.java
 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/EsModuleTests.java
index aeb433496..671550275 100644
--- 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/EsModuleTests.java
+++ 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/EsModuleTests.java
@@ -129,6 +129,7 @@ public class EsModuleTests extends App1TestCase
         assertEquals(getText("body-top-message"), "ES module imported 
correctly (<body> top)!");
         assertEquals(getText("body-bottom-message"), "ES module imported 
correctly (<body> bottom)!");
         assertEquals(getText("outside-metainf-message"), "ES module correctly 
imported from outside /META-INF/assets/es-modules!");
+        assertEquals(getText("suffix-message"), "ES module imported correctly 
from .mjs file!");
 
     }
     
diff --git 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.java
 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.java
index e6eb761e3..de17500ba 100644
--- 
a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.java
+++ 
b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.java
@@ -23,7 +23,7 @@ import 
org.apache.tapestry5.services.javascript.EsModuleConfigurationCallback;
 import org.apache.tapestry5.services.javascript.ImportPlacement;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
-@Import(esModule = {"root-folder"})
+@Import(esModule = {"root-folder", "suffix"})
 public class EsModuleDemo
 {
     public static final String DEFAULT_EXPORT_MESSAGE = 
"default-export-message";
diff --git 
a/tapestry-core/src/test/resources/META-INF/assets/es-modules/suffix.mjs 
b/tapestry-core/src/test/resources/META-INF/assets/es-modules/suffix.mjs
new file mode 100644
index 000000000..9e8190a81
--- /dev/null
+++ b/tapestry-core/src/test/resources/META-INF/assets/es-modules/suffix.mjs
@@ -0,0 +1,2 @@
+console.log("I'm a .mjs file!");
+document.getElementById("suffix-message").innerHTML = "ES module imported 
correctly from .mjs file!";
\ No newline at end of file
diff --git 
a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.tml
 
b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.tml
index 702834fb8..1e25cfc9d 100644
--- 
a/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.tml
+++ 
b/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EsModuleDemo.tml
@@ -23,6 +23,7 @@
        <p id="non-default-export-message"/>
        <p id="parameterless-default-export-message"/>
        <p id="parameter-type-default-export-message"/>
+       <p id="suffix-message"/>
        
        <p>
                Import map:

Reply via email to