README
@whook/whook
Build strong and efficient REST web services.
whook
allows you to create REST web services by providing
its ingredients and the recipe to make it work altogether.
The recipe is your Open API (OAS3) definition while ingredients are handlers, wrappers, services and their configuration.
Quick start
npm init @whook
Learn more about Whook.
API
Members
- default ⇒
Promise.<String>
Initialize the API_DEFINITIONS service according to the porject handlers.
- default ⇒
Promise.<String>
Initialize the BASE_URL service according to the HOST/PORT so that applications fallbacks to that default base URL.
- default ⇒
Promise.<Object>
Initialize the CONFIGS service according to the NODE_ENV
- default ⇒
Promise.<Number>
Initialize the PORT service from ENV or auto-detection if none specified in ENV
- default ⇒
Promise.<string>
Auto detect the Whook PROJECT_DIR
- default ⇒
Promise.<Object>
Wrap the ENV service in order to filter ENV vars for the build
- default ⇒
Promise.<string>
Auto detect the Whook WHOOK_PLUGINS_PATHS
Functions
- prepareServer(injectedNames, $) ⇒
Runs the Whook server
- prepareEnvironment($) ⇒
Prepare the Whook server environment
- initBuildConstants(constants) ⇒
Promise.<Object>
Allow to proxy constants directly by serializing it in the build, saving some computing and increasing boot time of the build.
- initENV(services) ⇒
Promise.<Object>
Initialize the ENV service using process env plus dotenv files
- initHost(services) ⇒
Promise.<String>
Initialize the HOST service from ENV or auto-detection if none specified in ENV
- initImporter(constants) ⇒
Promise.<Object>
Allow to proxy constants directly by serializing it in the build, saving some computing and increasing boot time of the build.
Promise.<String>
default ⇒ Initialize the API_DEFINITIONS service according to the porject handlers.
Kind: global variable
Returns: Promise.<String>
- A promise of a containing the actual host.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services API_DEFINITIONS depends on | |
services.PROJECT_SRC | Object |
The project sources location | |
services.WHOOK_PLUGINS_PATHS | Object |
The plugins paths to load services from | |
[services.IGNORED_FILES_SUFFIXES] | Object |
The files suffixes the autoloader must ignore | |
[services.IGNORED_FILES_PREFIXES] | Object |
The files prefixes the autoloader must ignore | |
[services.FILTER_API_TAGS] | Object |
Allows to only keep the endpoints taggeds with the given tags | |
services.importer | Object |
A service allowing to dynamically import ES modules | |
[services.log] | Object |
noop |
An optional logging service |
Promise.<String>
default ⇒ Initialize the BASE_URL service according to the HOST/PORT so that applications fallbacks to that default base URL.
Kind: global variable
Returns: Promise.<String>
- A promise of a containing the actual host.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services BASE_URL depends on | |
services.ENV | Object |
The process environment | |
services.CONFIG | Object |
The injected CONFIG value | |
[services.PROTOCOL] | Object |
The injected PROTOCOL value | |
services.HOST | Object |
The injected HOST value | |
services.PORT | Object |
The injected PORT value | |
[services.log] | Object |
noop |
An optional logging service |
Promise.<Object>
default ⇒ Initialize the CONFIGS service according to the NODE_ENV
Kind: global variable
Returns: Promise.<Object>
- A promise of a an object the actual configuration properties.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services CONFIGS depends on | |
services.NODE_ENV | Object |
The injected NODE_ENV value | |
services.PROJECT_SRC | Object |
The project source directory | |
[services.log] | Object |
noop |
An optional logging service |
services.importer | Object |
A service allowing to dynamically import ES modules |
Promise.<Number>
default ⇒ Initialize the PORT service from ENV or auto-detection if none specified in ENV
Kind: global variable
Returns: Promise.<Number>
- A promise of a number representing the actual port.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services PORT depends on | |
[services.ENV] | Object |
{} |
An optional environment object |
[services.log] | Object |
noop |
An optional logging service |
services.importer | Object |
A service allowing to dynamically import ES modules |
Promise.<string>
default ⇒ Auto detect the Whook PROJECT_DIR
Kind: global variable
Returns: Promise.<string>
- A promise of a number representing the actual port.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services PROJECT_DIR depends on | |
services.PWD | Object |
The process working directory | |
[services.log] | Object |
noop |
An optional logging service |
Promise.<Object>
default ⇒ Wrap the ENV service in order to filter ENV vars for the build
Kind: global variable
Returns: Promise.<Object>
- A promise of an object containing the reshaped env vars.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services ENV depends on | |
services.NODE_ENV | Object |
The injected NODE_ENV value to add it to the build env | |
[services.PROXYED_ENV_VARS] | Object |
{} |
A list of environment variable names to proxy |
[services.log] | Object |
noop |
An optional logging service |
Promise.<string>
default ⇒ Auto detect the Whook WHOOK_PLUGINS_PATHS
Kind: global variable
Returns: Promise.<string>
- A promise of a number representing the actual port.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services WHOOK_PLUGINS_PATHS depends on | |
services.WHOOK_PLUGINS | Array.<String> |
The active whook plugins list | |
services.PROJECT_SRC | String |
The project source directory | |
[services.log] | Object |
noop |
An optional logging service |
prepareServer(injectedNames, $) ⇒
Runs the Whook server
Kind: global function
Returns: Object
A promise of the injected services
Param | Type | Description |
---|---|---|
injectedNames | Array.<String> |
Root dependencies names to instanciate and return |
$ | Knifecycle |
The Knifecycle instance to use for the server run |
prepareEnvironment($) ⇒
Prepare the Whook server environment
Kind: global function
Returns: Promise
Param | Type | Description |
---|---|---|
$ | Knifecycle |
The Knifecycle instance to set the various services |
Promise.<Object>
initBuildConstants(constants) ⇒ Allow to proxy constants directly by serializing it in the build, saving some computing and increasing boot time of the build.
Kind: global function
Returns: Promise.<Object>
- A promise of an object containing the gathered constants.
Param | Type | Description |
---|---|---|
constants | Object |
The serializable constants to gather |
Example
import { initBuildConstants } from '@whook/whook';
import { alsoInject } from 'knifecycle';
export default alsoInject(['MY_OWN_CONSTANT'], initBuildConstants);
Promise.<Object>
initENV(services) ⇒ Initialize the ENV service using process env plus dotenv files
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.NODE_ENV | Object |
The injected NODE_ENV value to look for .env.${NODE_ENV} env file |
|
services.PWD | Object |
The process current working directory | |
[services.BASE_ENV] | Object |
{} |
An optional base environment |
[services.log] | Object |
noop |
An optional logging service |
Promise.<String>
initHost(services) ⇒ Initialize the HOST service from ENV or auto-detection if none specified in ENV
Kind: global function
Returns: Promise.<String>
- A promise of a containing the actual host.
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services HOST depends on | |
[services.ENV] | Object |
{} |
An optional environment object |
[services.log] | Object |
noop |
An optional logging service |
services.importer | Object |
A service allowing to dynamically import ES modules |
Promise.<Object>
initImporter(constants) ⇒ Allow to proxy constants directly by serializing it in the build, saving some computing and increasing boot time of the build.
Kind: global function
Returns: Promise.<Object>
- A promise of an object containing the gathered constants.
Param | Type | Description |
---|---|---|
constants | Object |
The serializable constants to gather |
Example
import { initBuildConstants } from '@whook/whook';
import { alsoInject } from 'knifecycle';
export default alsoInject(['MY_OWN_CONSTANT'], initBuildConstants);