Core Module

Build Status

The Nxus Core package includes the basic Application framework for building a Nxus app.

Introduction

You'll probably find the following resources useful background and help in building Nxus applcations.

Documentation

The full set of Nxus docs is available at http://docs.gonxus.org.

Installation

> npm install nxus-core --save

Usage

In your root application, create a new Application instance:

import {Application} from 'nxus-core'

let app = new Application(options)

app.start()

export default app

Events

Nxus is built around the concept of a boot cycle. The application dispatches events in the following order:

Boot Stage Description
init indicates the application is starting up and initializing modules. Other modules are not gauranteed to be available at this phase.
load modules are initialized and loading. This is the place to do any internal setup (outside of the constructor). Other modules are not gauranteed to be available at this phase.
startup all modules have been loaded and are available. This is the place to do any setup that requires data/input from other modules (like Storage)
launch the application is launching and all services have been started. Routes are accessible. Use onceAfter('launch') to gaurantee execution after the application has completely launched

Module Loading

By defaul the Application will look for other Nxus modules in the following order:

  1. @nxus namespaced npm modules in your package.json file.
  2. Any packages that match the 'namespace-' pattern passed in the namespace application config option.
  3. folders in the ./modules folder in the root of your project
  4. any modules specified in the modules option passed into Application on instantiation.

Module Access

In order to access module commands, use the Application.get() method.

let router = Application.get('router')

Application Configuration

The Application exposes a core config object that contains application and module specific configuration values.

Nxus uses the rc library to provide application configuration.

The application configuration can usually be found in a .nxusrc file in the root folder.

You can override specific confirguation values using command line environment variables, which supports nesting.

nxus_myconfig__value__first=true npm start

will translate into an application config of

console.log(app.config.myconfig) // {value: {first: true}}

Mocha Test Configuration

As a convenience, the Nxus Core package provides a /lib/test/support/node.js module that supplies a standard set of definitions for the Mocha test environment. It includes the Chai assertion library with ChaiAsPromised extensions, exposes chai and expect as global variables, and initializes Chai's should assertions.

You can refer to it with Mocha's --require option, or include it in a mocha.opts configuration file:

  --require nxus-core/lib/test/support/node

API

The Core Application class.

Configuration Options

Available options are:

Name Description
appName the name of your app. Will be used for console logging.
appDir the location to use to load the default 'package.json' file.
namespace any additional namespaces to use to load modules in the node _ modules folder. Can be a string or array of strings.
modules an array of paths to require into the application
debug Boolean to display debug messages, including startup banner
script Boolean to indicate the application is a CLI script, silences all logging/output messages except for explicit console.log calls
silent Don't show any console output. Useful for CLI scripts.
new Application(opts: Object)

Extends Dispatcher

Parameters
opts (Object = {}) the configuration options
Example
import {application} from 'nxus-core'

application.start()

export default application
Instance Members
get(name)
stop()
start()
restart()

The core Dispatcher class, which implements promisified

new Dispatcher()

Extends EventEmitter

Example
import { Dispatcher } from 'nxus-core'
class MyClass extends Dispatcher {
  ...
}
Instance Members
once(event, listener?)
before(event, listener)
after(event, listener)
onceBefore(event, listener)
onceAfter(event, listener)
emit(event, args)

The NxusModule class is a base class for all Nxus modules.

new NxusModule(app: any)
Parameters
app (any)
Properties
config (object) : The application configuration for this module.
log (Logger) : The logger for the module.

Factory method for instances of the debug-logger module.

Logger
Parameters
name (string = 'application') display name used to identify output from the logger
Returns
Object: debug-logger module instance