Generic component that loads component descriptions and their implementations.
The strategy for finding these artifacts is straighforward. We configure a
sequence of module objects, and we keep on calling the method
require in each of them until one returns it.
If none succeeds, we default to the standard require that throws an
exception if not found.
How to obtain module objects? Packages export them in a static method,
for example:
exports.getModule = function() {
return module;
}
The goal is to allow the application to override anything, but at the same
time provide sensible defaults. These defaults may be hidden in the
directories of other packages, and packages should export their own module
to make them accessable.
A package can export many resources using the # qualifier. For example,
caf_components#async first resolves caf_components as above, and then
reads the property async on the resolved object.
- Source:
Extends
Methods
(static) create($opt, specopt) → {Object}
- Source:
Helper constructor method for a loader component.
Description of types in file types.js.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
$ |
ctxType |
<optional> |
A context containing references to other components. |
spec |
specType |
<optional> |
Configuration data for this component. |
Throws:
-
If inputs are invalid.
- Type
- Error
Returns:
A new generic component.
- Type
- Object
__ca_firstModulePath__() → {string}
- Source:
Returns the file path of the top level module.
In a typical CAF application this path shows where the
ca_methods.js has been defined, e.g., <app_dir>/lib.
Returns:
The file path of the top level module.
- Type
- string
__ca_getModuleIndex__() → {Object.<string, Object>}
- Source:
Maps names to modules for successfully loaded artifacts.
Returns:
A mapping from artifact names to modules.
- Type
- Object.<string, Object>
__ca_loadComponent__(compSpec, cb)
- Source:
Loads, initializes, and registers a new component.
It uses a convention for compSpec.module of the form
module_name#method1#method2 that resolves to the following constructor
require("module_name").method1.method2.newInstance()
Parameters:
| Name | Type | Description |
|---|---|---|
compSpec |
specType | A description of the component. |
cb |
cbType | A callback to return the component or an error. |
__ca_loadDescription__(fileName, resolve, specopt) → {Object}
- Source:
Loads a JSON component description.
If needed, it also resolves the description by applying
templates, following links, reading environment properties, and
passing spec optional arguments.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
fileName |
string | A file name with a '.json' extension. |
|
resolve |
boolean | True if a fully resolved description is needed. |
|
spec |
specDeltaType |
<optional> |
An optional description to be merged-in with the result. |
Throws:
-
If it cannot find the description or parsing error.
- Type
- Error
Returns:
A parsed component description.
- Type
- Object
__ca_loadResource__(resourceName) → {Object}
- Source:
Loads a resource that could be loaded with require, e.g., a JSON
description or a class module.
It keeps an internal cache of resources that clears when the
module list changes. See __ca_setModules__ .
Parameters:
| Name | Type | Description |
|---|---|---|
resourceName |
string | The name of the resource to load. |
Throws:
-
When it cannot find the resource
- Type
- Error
Returns:
A loaded resource.
- Type
- Object
__ca_registerLogger__(logger)
- Source:
Register the logger component.
The loader is typically the first component that is loaded, i.e., before the logger, but we want the loader to log error messages. Therefore, a explicit late registration is needed.
It can only set once for security reasons.
Parameters:
| Name | Type | Description |
|---|---|---|
logger |
Object | A logger component. |
__ca_setModules__(modulesArray)
- Source:
Sets a list of module resolvers that should be used in sequence to
require descriptions and implementations.
Parameters:
| Name | Type | Description |
|---|---|---|
modulesArray |
Array.<Object> | A sequence of |
__ca_setStaticArtifacts__(staticArtif) → {Object.<string, Object>}
- Source:
Sets static values for a given set of artifacts.
The goal is to avoid calling require, enabling tools like browserify
that cannot dynamically load resources.
Parameters:
| Name | Type | Description |
|---|---|---|
staticArtif |
Object.<string, Object> | Static values for a set of artifacts. |
Returns:
The previous static values.
- Type
- Object.<string, Object>