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)
