Package org.apache.tapestry5.services.javascript

# Interface ModuleManager

All Known Implementing Classes:
  `ModuleManagerImpl`

@UsesMappedConfiguration(JavaScriptModuleConfiguration.class) public interface ModuleManager
Responsible for managing access to the JavaScript modules. The configuration of the service allows overrides of the default search path; the configuration keys are module names, and the configuration values are the `JavaScriptModuleConfiguration` definitions for those module names. This is primarily used to wrap non-AMD compliant libraries for use with RequireJS (via contributed `JavaScriptModuleConfiguration`s).

Since:
  5.4
See Also:
  - `ModuleConfigurationCallback`
  - `AMDWrapper`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Resource`
  `findResourceForModule(String moduleName)`
  Given a module name (which may be a path of names separated by slashes), locates the corresponding `Resource`.
  `void`
  `writeConfiguration(Element body, List<ModuleConfigurationCallback> moduleConfigurationCallbacks)`
  Invoked by the internal `DocumentLinker` service to write the configuration for the module system into the page.
  `void`
  `writeInitialization(Element body, List<String> libraryURLs, List<?> inits)`
  Invoked by the internal `DocumentLinker` service to write the initializations (as per `JavaScriptSupport.require(String)` into the page; this occurs after the module infrastructure has been written into the page, along with the core libraries.

- ## Method Details

  - ### writeConfiguration

    void writeConfiguration(Element body, List<ModuleConfigurationCallback> moduleConfigurationCallbacks)
    Invoked by the internal `DocumentLinker` service to write the configuration for the module system into the page.
    Parameters:
      `body` - `<body>` element of the page, to which new `<script>` element(s) will be added.
      `moduleConfigurationCallbacks` - a list of `ModuleConfigurationCallback`s, which is used to customize the configuration before it is written.

  - ### writeInitialization

    void writeInitialization(Element body, List<String> libraryURLs, List<?> inits)
    Invoked by the internal `DocumentLinker` service to write the initializations (as per `JavaScriptSupport.require(String)` into the page; this occurs after the module infrastructure has been written into the page, along with the core libraries.
    Parameters:
      `body` - `<body>` element of the page, to which new `<script>` element(s) will be added.
      `libraryURLs` - additional libraries that should be dynamically loaded before evaluating the inits
      `inits` - specify initialization on the page, based on loading modules, extacting functions from modules, and invoking those functions

  - ### findResourceForModule

    Resource findResourceForModule(String moduleName)
    Given a module name (which may be a path of names separated by slashes), locates the corresponding `Resource`. First checks for contributed shim modules, then searches for possible matches among the defined library names. As a special case, the folder name "app" is mapped to the application's package.
    Parameters:
      `moduleName` - name of module to locate
    Returns:
      corresponding resource, or null if not found