Contribute requirejs.config.paths to ModuleManager

Svein-Erik Løken <[email protected]>
Newsgroups gmane.comp.java.tapestry.user
Message-ID <DB3PR08MB02832F5DA262EA972CEF8455D2260@DB3PR08MB0283.eurprd08.prod.outlook.com>
Trying to use TypeScript and React with Tapestry:

In TypeScript I need to use:  import * as React from "react";

I would like to load react: react.min, so I have to set paths: {...}

The configuration should be set at startup, but I cannot figure how to do it. I can set requirejs.config.shim, but not paths.

I tried to load it with @Contribute(ModuleManager.class), but could not figure out how.

PSEUDO CODE
@Contribute(ModuleManager.class)
public static void setupMyBaseModules(MappedConfiguration<String, Object> configuration) {
    JSONObject pathsConfig = new JSONObject(
            "react", "react.min",
            "react-dom", "react-dom.min"
    );
    AMDResourceConfiguration paths = new AMDResourceConfiguration("paths", pathsConfig);
    configuration.add(null, new JavaScriptModuleConfiguration(paths));
}


Tried to load it this way:


@Startup
public void registerToClearPlasticProxyFactoryOnInvalidation(JavaScriptSupport javaScriptSupport) {
    ModuleConfigurationCallback callback = new
            ModuleConfigurationCallback() {
                @Override
                public JSONObject configure(JSONObject configuration) {
                    configuration.put("paths",
                            new JSONObject(
                                    "react", "react.min",
                                    "react-dom", "react-dom.min"
                            ));
                    return configuration;
                }
            };
    javaScriptSupport.addModuleConfigurationCallback(callback);
}

[ERROR] ioc.Registry org.apache.tapestry5.ioc.util.UnknownValueException: No object of type org.apache.tapestry5.services.javascript.JavaScriptSupport is available from the Environment.






Now I am loading the configuration in @SetupRender, but it should be loaded globally.


@Inject
JavaScriptSupport javaScriptSupport;

private static final ModuleConfigurationCallback CALLBACK = new
        ModuleConfigurationCallback() {
            @Override
            public JSONObject configure(JSONObject configuration) {
                configuration.put("paths",
                        new JSONObject(
                                "react", "react.min",
                                "react-dom", "react-dom.min"
                                ));
                return configuration;
            }
        };

@SetupRender
public void configureRequireJS() {
    javaScriptSupport.addModuleConfigurationCallback(CALLBACK);
}

Can this be configuration be contribute to the ModuleManager.class? I think this should be supported in Tapestry.

S-E
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.