core.config
Preface
The core.config object provides methods for reading configuration and for creating new options. It allows to create namespaces, so each namespaced config is isolated from the other namespaces.
Here is described the config API partially. For further information about the whole API, please read the @mocks-server/config docs.
API
When the core is passed to a plugin as a parameter, the config object is a config namespace instead of the root config instance. The config namespace is labeled with the plugin id, so each plugin owns its own namespace in the global configuration object.
addNamespace()
core.config.addNamespace(name): Add namespace to the root. Returns a namespace instance.
name(String): Name for the namespace.
addOption()
core.config.addOption(optionProperties): Equivalent to the addOption method in namespaces, but it add the option to the root. Returns an option instance.
optionProperties(Object): Properties defining the option. See theaddOptionmethod in namespaces for further info.
addOptions()
core.config.addOptions(optionsProperties): Add many options. Returns an array of option instances.
optionsProperties(Array): Array ofoptionProperties.
namespace()
core.config.namespace(name): Returns the namespace instance in the root config with name equal to name.
option()
core.config.option(optionName): Returns the option instances in the root config with name equal to optionName.
set()
core.config.set(configuration): Set configuration properties to each correspondent namespace and options.
configuration(Object): Object with programmatic configuration. Levels in the object correspond to namespaces names, and last level keys correspond to option names.
validate()
core.config.validate(configuration, options): Allows to pre-validate a configuration before setting it, for example. It returns an object with valid and errors properties. See AJV docs for further info.
configuration(Object): Object with configuration. Levels in the object correspond to namespaces names, and last level keys correspond to option names.options(Object): Object with extra options for validation:allowAdditionalProperties(Boolean): Defaultfalse. If true, additional properties in the configuration would not produce validation errors.
getValidationSchema()
getValidationSchema(options): Returns a validation schema compatible with AJV for validating the configuration of all nested namespaces.
options(Object): Object with extra options for validation:allowAdditionalProperties(Boolean): Defaultfalse. If true, the validation schema will allow additional properties.
namespaces
core.config.namespaces: Getter returning array with all root namespaces.
options
core.config.options: Getter returning array with all root options.
value
core.config.value: Getter returning the current values from all namespaces and options as an object. Levels in the object correspond to namespaces names, and last level keys correspond to option names. It can be also used as setter as an alias of the set method, with default options.
loadedFile
core.config.loadedFile: Getter returning the file path of the loaded configuration file. It returns null if no configuration file was loaded.
Namespace instance API
A configNamespace instance is returned when using the root core.config.namespace(name) method, or when executing configNamespace.namespace(name) in a namespace. So, any amount of config nested namespace levels can be created.
addNamespace()
configNamespace.addNamespace(name): Add another namespace to the current namespace. Returns a namespace instance.
name(String): Name for the namespace.
addOption()
configNamespace.addOption(optionProperties): Adds an option to the namespace. Returns an option instance.
optionProperties(Object): Properties defining the option.name(String): Name for the option.description(String): Optional. Used in help, traces, etc.type(String). One ofstring,boolean,number,arrayorobject. Used to apply type validation when loading configuration and inoption.valuesetter.itemsType(String). Can be defined only whentypeisarray. It must be one ofstring,boolean,numberorobject.default- Optional. Default value. Its type depends on thetypeoption.extraData- (Object). Optional. Useful to store any extra data you want in the option. Mocks Server supportedextraDataoptions are:scaffold- (Object).omit- (Boolean). Determines whether the option should be included in the config scaffold or not. Default isfalse.commented- (Boolean). Determines whether the option should be commented in the config scaffold or not. Default isfalse.value- (Any). Provides a specific value to be set for this option when the config scaffold is created.
addOptions()
configNamespace.addOptions(optionsProperties): Add many options. Returns an array of option instances.
optionsProperties(Array): Array ofoptionProperties.
namespace()
configNamespace.namespace(name): Returns the namespace instance in this namespace with name equal to name.
option()
configNamespace.option(optionName): Returns the option instances in this namespace with name equal to optionName.
set()
configNamespace.set(configuration): Set configuration properties to each correspondent child namespace and options.
configuration(Object): Object with configuration. Levels in the object correspond to child namespaces names, and last level keys correspond to option names.
namespaces
configNamespace.namespaces: Getter returning an array with children namespaces.
options
configNamespace.options: Getter returning an array object with children options.
value
configNamespace.value: Getter returning the current values from all child namespaces and options as an object. Levels in the object correspond to namespaces names, and last level keys correspond to option names. It can be also used as setter as an alias of the set method, with default options.
name
configNamespace.name: Getter returning the namespace name.
root
configNamespace.root: Getter returning the root configuration instance. It is useful when trying to access to the root Mocks Server configuration from a plugin, but use it with caution because you will be accessing to all of the elements configuration, not only to the plugin's one.
Option instance API
An option instance is returned when using the config.addOption or config.option methods.
set()
option.set(value, [options]): Sets option value. Allows to pass options when setting the value.
value:<Any>. Depending on the option type, the value type may be different.options:<Object>.merge:<Boolean>. Determines if the value should be merged with the previous value in case it is an Object or an Array. Default isfalse.
onChange()
option.onChange(callback): Allows to add a listener that will be executed whenever the value changes. It only emit events after calling to the config.start method. It returns a function that removes the listener once executed.
callback(value)(Function): Callback to be executed whenever the option value changes. It receives the new value as first argument.
value
option.value: Getter or setter of the current value.
name
option.name: Getter returning the option name.
type
option.type: Getter returning the option type.
description
option.description: Getter returning the option description.
extraData
option.extraData: Getter returning the option extra data.
default
option.default: Getter returning the option default value.