Out of the box application environment and configuration service.
npm install application-services[//]: # ( )
[//]: # (This file is automatically generated by a metapak)
[//]: # (module. Do not change it except between the)
[//]: # (content:start/end flags, your changes would)
[//]: # (be overridden.)
[//]: # ( )


[//]: # (::contents:start)
Need to manage several environment and configurations for yourknifecycle based app? This module
is all what your need.
Out of the box, standard compliant, application environment:
- accepting only
standard
NODE_ENV values: test, development, production,
- managing application environment in a clean and separate APP_ENV environment
variable,
- leverage dotenv to read environment variables,
- manage separate and type checked applications configurations for each
deployment environments and allows loading it automatically (in the
./configs/${APP_ENV}/index file).
It requires log and importer services to be passed in, you can find
implementations in thecommon-services project.
It also relies on constant services you will have to provide: APP_ENV,NODE_ENV and the MAIN_FILE_URL (directory where actual code is).
[//]: # (::contents:end)
Cast any string into an application environment
Promise.<Object>Initialize the APP_CONFIG service according to the APP_ENV
Promise.<Object>Initialize the ENV service using process env plus dotenv files
loaded in .env.node.${ENV.NODE_ENV} and .env.app.${APP_ENV}.
Promise.<Object>Instantiate the process service
Promise.<Object>Initialize the PROJECT_DIR service
Promise.<function()>Instantiate the time mock service
ObjectKind: global function
Returns: string
| Param | Description |
| --- | --- |
| appEnv | string |
| availableAppEnvs | string[] |
Promise.<Object>Kind: global function
Returns: Promise.<Object> - A promise of a an object the actual configuration properties.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| services | Object | | The services APP_CONFIG depends on |
| services.APP_ENV | Object | | The injected APP_ENV value |
| services.MAIN_FILE_URL | String | | An URL pointing to the main file run |
| services.importer | Object | | A service allowing to dynamically import ES modules |
| [services.log] | Object | noop | An optional logging service |
Promise.<Object>.env.node.${ENV.NODE_ENV} and .env.app.${APP_ENV}.Kind: global function
Returns: Promise.<Object> - A promise of an object containing the actual env vars.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| services | Object | | The services ENV depends on |
| [services.BASE_ENV] | Object | | Base env vars that will be added to the environment |
| services.APP_ENV | Object | | The injected APP_ENV value |
| services.PROCESS_ENV | Object | | The injected process.env value |
| services.PROJECT_DIR | Object | | The NodeJS project directory |
| [services.log] | Object | noop | An optional logging service |
Promise.<Object>Kind: global function
Returns: Promise.<Object> - A promise of the process object
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| services | Object | | The services process depends on |
| services.APP_ENV | Object | | The injected APP_ENV value |
| [services.PROCESS_NAME] | Object | | The process name to display |
| [services.SIGNALS] | Object | | The process signals that interrupt the process |
| [services.exit] | Object | | A process.exit like function |
| services.$instance | Object | | The Knifecycle instance |
| services.$fatalError | Object | | The Knifecycle fatal error manager |
| [services.log] | Object | noop | An optional logging service |
Promise.<Object>Kind: global function
Returns: Promise.<Object> - A promise of a an object the actual configuration properties.
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| services | Object | | The services PROJECT_DIR depends on |
| [services.log] | Object | noop | An optional logging service |
Promise.<function()>Kind: global function
Returns: Promise.<function()> - A promise of the time function
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| services | Object | | The services to inject |
| services.CLOCK_MOCK | Object | | An object to store the time mock state |
| [services.time] | Object | noop | A time function |
| [services.log] | Object | noop | A logging function |
Example
``js
import {
DEFAULT_LOGGER,
initLog,
} from 'common-services';
import {
initTimeMock,
} from 'application-services';
const CLOCK_MOCK = {
referenceTime: Date.now(),
mockedTime: Date.parse('2012-12-20T20:20:20Z'),
isFixed: false,
};
const log = await initLog({
logger: DEFAULT_LOGGER,
});
const time = await initTimeMock({
log,
});
``