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 <[email protected]>
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: