application-services
v6.1.0
Published
Out of the box application environment and configuration service.
Downloads
1,062
Readme
application-services
Out of the box application environment and configuration service.
Need to manage several environment and configurations for your
knifecycle
based app? This module
is all what your need.
Features
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 the
common-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).
API
Constants
Functions
PROCESS_ENV
Provides the PROCESS_ENV service : Object
Kind: global constant
extractAppEnv(appEnv, availableAppEnvs) ⇒
Cast any string into an application environment
Kind: global function
Returns: string
| Param | Description | | --- | --- | | appEnv | string | | availableAppEnvs | string[] |
initAppConfig(services) ⇒ Promise.<Object>
Initialize the APP_CONFIG service according to the APP_ENV
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 |
initENV(services) ⇒ Promise.<Object>
Initialize the ENV service using process env plus dotenv files
loaded in .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 |
initProcess(services) ⇒ Promise.<Object>
Instantiate the process service
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 |
initProjectDirectory(services) ⇒ Promise.<Object>
Initialize the PROJECT_DIR service
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 |