6.0.0 • Published 2 months ago

application-services v6.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

application-services

Out of the box application environment and configuration service.

GitHub license Coverage Status

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

ParamDescription
appEnvstring
availableAppEnvsstring[]

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.

ParamTypeDefaultDescription
servicesObjectThe services APP_CONFIG depends on
services.APP_ENVObjectThe injected APP_ENV value
services.MAIN_FILE_URLStringAn URL pointing to the main file run
services.importerObjectA service allowing to dynamically import ES modules
services.logObjectnoopAn 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.

ParamTypeDefaultDescription
servicesObjectThe services ENV depends on
services.BASE_ENVObjectBase env vars that will be added to the environment
services.APP_ENVObjectThe injected APP_ENV value
services.PROCESS_ENVObjectThe injected process.env value
services.PROJECT_DIRObjectThe NodeJS project directory
services.logObjectnoopAn optional logging service

initProcess(services) ⇒ Promise.<Object>

Instantiate the process service

Kind: global function
Returns: Promise.<Object> - A promise of the process object

ParamTypeDefaultDescription
servicesObjectThe services process depends on
services.APP_ENVObjectThe injected APP_ENV value
services.PROCESS_NAMEObjectThe process name to display
services.SIGNALSObjectThe process signals that interrupt the process
services.exitObjectA process.exit like function
services.$instanceObjectThe Knifecycle instance
services.$fatalErrorObjectThe Knifecycle fatal error manager
services.logObjectnoopAn 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.

ParamTypeDefaultDescription
servicesObjectThe services PROJECT_DIR depends on
services.logObjectnoopAn optional logging service

Authors

License

MIT