# asteroid-module v0.0.1 ## About An `AsteroidModule` is an abstract class that provides a base for all asteroid modules. Its constructor takes an `options` argument provided by a `config.json`. It is also supplied with dependencies it lists on its constructor based on information in the `config.json` file. ## Example See [resource](../resource) for an example asteroid module. ## AsteroidModule.dependencies An asteroid module may define dependencies on other modules that can be configured in `config.json`. Eg. the [collection](../collection/lib/collection.js) module defines a [model](../model) dependency. Collection.dependencies = { model: 'model' } A configuration then must define: { "dependencies": { "model": "some-model-module" } } Where `some-model-module` is an existing `model` instance. ## AsteroidModule.optionsDefinition Asteroid Modules may also describe the options they accept. This will validate the configuration and make sure users have supplied required information and in a way that the module can use to construct a working instance. Here is an example options description for the [oracle database connection module](../connections/oracle-connection). // must come after `inherits()` OracleConnection.defineOption('hostname', 'string', {required: true}); OracleConnection.defineOption('port', 'number', {min: 10, max: 99999}); OracleConnection.defineOption('username', 'string'); OracleConnection.defineOption('password', 'string'); ### AsteroidModule.defineOption(key, type, [options]) **key** the option name given in `config.json`. **type** must be one of: - string - boolean - number - array **options** depend on the type { required: true, // options are optional by default min: 10, // minimum length or value max: 100, // max length or value }