Skip to main content

Class: JovaServer

Defined in: src/JovaServer.ts:43

Extends​

  • EventEmitter

Constructors​

Constructor​

new JovaServer(options: JovaServerOptions): JovaServer

Defined in: src/JovaServer.ts:59

Parameters​

ParameterType
optionsJovaServerOptions

Returns​

JovaServer

Overrides​

EventEmitter.constructor

Properties​

all​

readonly all: IRouterMatcher<Express> = container.express.all

Defined in: src/JovaServer.ts:185

Name​

App.all

Description​

Special-cased "all" method, applying the given route path, middleware, and callback to every HTTP method. This method is like the standard methods, except it matches all HTTP verbs.

See​

Express Docs: Application.all()

Param​

string

Param​

any


any​

readonly any: IRouterMatcher<Express> = container.express.all

Defined in: src/JovaServer.ts:171

Name​

App.any

Description​

Alias for all.

This method is like the standard methods, except it matches all HTTP verbs.

See​

Express Docs: Application.all()

Param​

string

Param​

any


delete​

readonly delete: IRouterMatcher<Express> = container.express.delete

Defined in: src/JovaServer.ts:228

Name​

App.delete

Description​

Contextual function.

HTTP DELETE:

Routes HTTP DELETE requests to the specified path with the specified callback functions.

See​

Express Docs: Application.delete()

Param​

string

Param​

any


engine()​

readonly engine: (ext: string, fn: Function) => Application = container.express.engine

Defined in: src/JovaServer.ts:384

Register the given template engine callback fn as ext.

By default will require() the engine based on the file extension. For example if you try to render a "foo.jade" file Express will invoke the following internally:

app.engine('jade', require('jade').__express);

For engines that do not provide .__express out of the box, or if you wish to "map" a different extension to the template engine you may use this method. For example mapping the EJS template engine to ".html" files:

app.engine('html', require('ejs').renderFile);

In this case EJS provides a .renderFile() method with the same signature that Express expects: (path, options, callback), though note that it aliases this method as ejs.__express internally so if you're using ".ejs" extensions you dont need to do anything.

Some template engines do not follow this convention, the Consolidate.js library was created to map all of node's popular template engines to follow this convention, thus allowing them to work seamlessly within Express.

Parameters​

ParameterType
extstring
fnFunction

Returns​

Application

Name​

App.engine

Description​

Registers the given template engine callback as ext.

See​

Express Docs: Application.engine()

Param​

string

Param​

(path: string, options: object, callback: (e: any, rendered?: string) => void) => void


get​

readonly get: (name: string) => any & IRouterMatcher<Express> = container.express.get

Defined in: src/JovaServer.ts:211

Name​

App.get

Description​

Contextual function.

HTTP GET:

Routes HTTP GET requests to the specified path with the specified callback functions.

See​

Description​

Get Setting:

Returns the value of name app setting, where name is one of the strings in the app settings table.

Param​

get) path string

Param​

get) callback any

Param​

setting) setting string | JovaSettingsOptions


readonly head: IRouterMatcher<Express> = container.express.head

Defined in: src/JovaServer.ts:306

Name​

App.head

Description​

Routes HTTP HEAD requests to the specified path with the specified callback functions.

See​

Express Docs: Application.head()

[ NO DOCUMENTATION CURRENT ]

Param​

string

Param​

any


locals​

locals: any = container.express.locals

Defined in: src/JovaServer.ts:404

Name​

App.locals

Description​

The locals object has properties that are local variables within the application, and will be available in templates rendered with response.render.

Once set, the value of locals properties persist throughout the life of the application, in contrast with response.locals properties that are valid only for the lifetime of the request. You can access local variables in templates rendered within the application. This is useful for providing helper functions to templates, as well as application-level data. Local variables are available in middleware via request.app.locals.

See​

Express Docs: Application.locals

locals is also a property of the container object.


middleware​

readonly middleware: IRouterHandler<Express> & IRouterMatcher<Express> = container.express.use

Defined in: src/JovaServer.ts:350

Name​

App.middleware

Description​

Mounts the specified middleware function or functions at the specified path: the middleware function is executed when the base of the requested path matches path.

See​

Express Docs: Application.use()

Param​

string

Param​

any


options​

readonly options: IRouterMatcher<Express> = container.express.options

Defined in: src/JovaServer.ts:320

Name​

App.options

Description​

Routes HTTP OPTIONS requests to the specified path with the specified callback functions.

See​

Express Docs: Application.options()

Param​

string

Param​

any


param()​

readonly param: {(name: string | string[], handler: RequestParamHandler): this; (callback: (name: string, matcher: RegExp) => RequestParamHandler): this; } = container.express.param

Defined in: src/JovaServer.ts:239

Call Signature​

(name: string | string[], handler: RequestParamHandler): this

Map the given param placeholder name(s) to the given callback(s).

Parameter mapping is used to provide pre-conditions to routes which use normalized placeholders. For example a :user_id parameter could automatically load a user's information from the database without any additional code,

The callback uses the samesignature as middleware, the only differencing being that the value of the placeholder is passed, in this case the id of the user. Once the next() function is invoked, just like middleware it will continue on to execute the route, or subsequent parameter functions.

 app.param('user_id', function(req, res, next, id){
User.find(id, function(err, user){
if (err) {
next(err);
} else if (user) {
req.user = user;
next();
} else {
next(new Error('failed to load user'));
}
});
});
Parameters​
ParameterTypeDescription
namestring | string[]
handlerRequestParamHandler-
Returns​

this

Call Signature​

(callback: (name: string, matcher: RegExp) => RequestParamHandler): this

Map the given param placeholder name(s) to the given callback(s).

Parameter mapping is used to provide pre-conditions to routes which use normalized placeholders. For example a :user_id parameter could automatically load a user's information from the database without any additional code,

The callback uses the samesignature as middleware, the only differencing being that the value of the placeholder is passed, in this case the id of the user. Once the next() function is invoked, just like middleware it will continue on to execute the route, or subsequent parameter functions.

 app.param('user_id', function(req, res, next, id){
User.find(id, function(err, user){
if (err) {
next(err);
} else if (user) {
req.user = user;
next();
} else {
next(new Error('failed to load user'));
}
});
});
Parameters​
ParameterType
callback(name: string, matcher: RegExp) => RequestParamHandler
Returns​

this

Name​

App.param

Description​

Add callback triggers to route parameters.

See​

Express Docs: Application.param()


path()​

readonly path: () => string = container.express.path

Defined in: src/JovaServer.ts:419

Return the app's absolute pathname based on the parent(s) that have mounted it.

For example if the application was mounted as "/admin", which itself was mounted as "/blog" then the return value would be "/blog/admin".

Returns​

string

Name​

App.path

Description​

Returns the canonical path of the application, a string.

The behavior of this method can become very complicated in complex cases of mounted apps: it is usually better to use request.baseUrl to get the canonical path of the application.

See​

Express Docs: Application.path()


post​

readonly post: IRouterMatcher<Express> = container.express.post

Defined in: src/JovaServer.ts:252

Name​

App.post

Description​

Routes HTTP POST requests to the specified path with the specified callback functions.

See​

Express Docs: Application.post()

Param​

string

Param​

any


put​

readonly put: IRouterMatcher<Express> = container.express.put

Defined in: src/JovaServer.ts:265

Name​

App.put

Description​

Routes HTTP PUT requests to the specified path with the specified callback functions.

See​

Express Docs: Application.put()

Param​

string

Param​

any


render()​

readonly render: {(name: string, options?: Object, callback?: (err: Error, html: string) => void): void; (name: string, callback: (err: Error, html: string) => void): void; } = container.express.render

Defined in: src/JovaServer.ts:278

Call Signature​

(name: string, options?: Object, callback?: (err: Error, html: string) => void): void

Render the given view name name with options and a callback accepting an error and the rendered template string.

Example:

app.render('email', { name: 'Tobi' }, function(err, html){ // ... })

Parameters​
ParameterTypeDescription
namestring
options?Objector fn
callback?(err: Error, html: string) => void-
Returns​

void

Call Signature​

(name: string, callback: (err: Error, html: string) => void): void

Parameters​
ParameterType
namestring
callback(err: Error, html: string) => void
Returns​

void

Name​

App.render

Description​

Returns the rendered HTML of a view via the callback function. It accepts an optional parameter that is an object containing local variables for the view. It is like response.render(), except it cannot send the rendered view to the client on its own.

See​

Express Docs: Application.render()


route()​

readonly route: (prefix: PathParams) => IRoute = container.express.route

Defined in: src/JovaServer.ts:290

Parameters​

ParameterType
prefixPathParams

Returns​

IRoute

Name​

App.route

Description​

Returns an instance of a single route, which you can then use to handle HTTP verbs with optional middleware. Use route to avoid duplicate route names (and thus typo errors).

See​

Express Docs: Application.route()


use​

readonly use: IRouterHandler<Express> & IRouterMatcher<Express> = container.express.use

Defined in: src/JovaServer.ts:335

Name​

App.use

Description​

Mounts the specified middleware function or functions at the specified path: the middleware function is executed when the base of the requested path matches path.

See​

Express Docs: Application.use()

Param​

string

Param​

any

Methods​

listen()​

readonly listen(port: undefined | string | number, allowPortIncrement?: boolean): Promise<void>

Defined in: src/JovaServer.ts:442

Parameters​

ParameterTypeDescription
portundefined | string | number
allowPortIncrement?boolean

Returns​

Promise<void>

Name​

App.listen

Description​

Start the Jova Server, begin listening to a port & its incoming requests.

Examples​

const server = new JovaServer();

await server.listen(3000); // Without port increment
const server = new JovaServer({ port: 3000 });

await server.listen();
const server = new JovaServer();

await server.listen(3000, true); // With port increment

set()​

readonly set(Name: string, Value: any): Application

Defined in: src/JovaServer.ts:369

Parameters​

ParameterTypeDescription
NamestringJovaSettingsOptions
Valueanyany

Returns​

Application

Name​

App.set

Description​

Assigns setting name to value. You may store any value that you want, but certain names can be used to configure the behavior of the server. These special names are listed in the app settings table.

Calling application.set('foo', true) for a Boolean property is the same as calling application.enable('foo'). Similarly, calling application.set('foo', false) for a Boolean property is the same as calling application.disable('foo').

See​

Express Docs: Application.set()