This is an automated email from the ASF dual-hosted git repository. thiagohp pushed a commit to branch javax in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
The following commit(s) were added to refs/heads/javax by this push: new 0a1599211 TAP5-2803: .mjs files should also be considered ES modules 0a1599211 is described below commit 0a15992112bce8f7f47552a64542c3a7bcf2fe2e 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: