Skip to main content

Class: ServerRouter

Defined in: packages/core/src/router/ServerRouter.ts:17

The server-side implementation of the Router interface.

Extends

Constructors

new ServerRouter()

new ServerRouter(pageManager, factory, dispatcher, request, response, settings): ServerRouter

Defined in: packages/core/src/router/ServerRouter.ts:42

Initializes the router.

Parameters

pageManager

PageManager

The current page manager.

factory

RouteFactory

The router factory used to create routes.

dispatcher

Dispatcher

Dispatcher fires events to app.

request

Request

The current HTTP request.

response

Response

The current HTTP response.

settings

$Router settings.

undefined | number | { isSPARouted: (url, action?) => boolean; middlewareTimeout: number; }

Returns

ServerRouter

Overrides

AbstractRouter.constructor

Properties

_currentlyRoutedPath

protected _currentlyRoutedPath: string = ''

Defined in: packages/core/src/router/AbstractRouter.ts:93

Inherited from

AbstractRouter._currentlyRoutedPath


_currentMiddlewareId

protected _currentMiddlewareId: number = 0

Defined in: packages/core/src/router/AbstractRouter.ts:92

Middleware ID counter which is used to auto-generate unique middleware names when adding them to routeHandlers map.

Inherited from

AbstractRouter._currentMiddlewareId


_dispatcher

protected _dispatcher: Dispatcher

Defined in: packages/core/src/router/AbstractRouter.ts:62

Dispatcher fires events to app.

Inherited from

AbstractRouter._dispatcher


_factory

protected _factory: RouteFactory

Defined in: packages/core/src/router/AbstractRouter.ts:58

Factory for routes.

Inherited from

AbstractRouter._factory


_host

protected _host: string = ''

Defined in: packages/core/src/router/AbstractRouter.ts:71

The application's host.

Inherited from

AbstractRouter._host


_isSPARouted

protected _isSPARouted: undefined | (url, action?) => boolean

Defined in: packages/core/src/router/AbstractRouter.ts:95

Inherited from

AbstractRouter._isSPARouted


_languagePartPath

protected _languagePartPath: string = ''

Defined in: packages/core/src/router/AbstractRouter.ts:80

The URL path fragment used as a suffix to the _root field that specifies the current language.

Inherited from

AbstractRouter._languagePartPath


_middlewareTimeout

protected _middlewareTimeout: number

Defined in: packages/core/src/router/AbstractRouter.ts:94

Inherited from

AbstractRouter._middlewareTimeout


_pageManager

protected _pageManager: PageManager

Defined in: packages/core/src/router/AbstractRouter.ts:54

The page manager handling UI rendering, and transitions between pages if at the client side.

Inherited from

AbstractRouter._pageManager


_protocol

protected _protocol: string = ''

Defined in: packages/core/src/router/AbstractRouter.ts:67

The current protocol used to access the application, terminated by a colon (for example https:).

Inherited from

AbstractRouter._protocol


_root

protected _root: string = ''

Defined in: packages/core/src/router/AbstractRouter.ts:75

The URL path pointing to the application's root.

Inherited from

AbstractRouter._root


_routeHandlers

protected _routeHandlers: Map<string, AbstractRoute<string | RoutePathExpression> | RouterMiddleware>

Defined in: packages/core/src/router/AbstractRouter.ts:84

Storage of all known routes and middlewares. The key are their names.

Inherited from

AbstractRouter._routeHandlers

Accessors

$dependencies

Get Signature

get static $dependencies(): Dependencies

Defined in: packages/core/src/router/ServerRouter.ts:21

Returns

Dependencies

Methods

_extractRoutePath()

protected _extractRoutePath(path): string

Defined in: packages/core/src/router/AbstractRouter.ts:526

Strips the URL path part that points to the application's root (base URL) from the provided path.

Parameters

path

string

Relative or absolute URL path.

Returns

string

URL path relative to the application's base URL.

Inherited from

AbstractRouter._extractRoutePath


_getCurrentlyRoutedPath()

_getCurrentlyRoutedPath(): string

Defined in: packages/core/src/router/AbstractRouter.ts:664

Returns path that is stored in private property when a route method is called.

Returns

string

Inherited from

AbstractRouter._getCurrentlyRoutedPath


_getMiddlewaresForRoute()

_getMiddlewaresForRoute(routeName): RouterMiddleware[]

Defined in: packages/core/src/router/AbstractRouter.ts:642

Returns middlewares preceding given route name.

Parameters

routeName

string

Returns

RouterMiddleware[]

Inherited from

AbstractRouter._getMiddlewaresForRoute


_handle()

_handle(route, params, options?, action?): Promise<void | UnknownParameters>

Defined in: packages/core/src/router/AbstractRouter.ts:549

Handles the provided route and parameters by initializing the route's controller and rendering its state via the route's view.

The result is then sent to the client if used at the server side, or displayed if used as the client side.

Parameters

route

AbstractRoute<string | RoutePathExpression>

The route that should have its associated controller rendered via the associated view.

params

RouteParams

Parameters extracted from the URL path and query.

options?

Partial<RouteOptions>

The options overrides route options defined in the routes.js configuration file.

action?

RouteAction

An action object describing what triggered this routing.

Returns

Promise<void | UnknownParameters>

A promise that resolves when the page is rendered and the result is sent to the client, or displayed if used at the client side.

Inherited from

AbstractRouter._handle


_runMiddlewares()

_runMiddlewares(middlewares, params, locals): Promise<void>

Defined in: packages/core/src/router/AbstractRouter.ts:677

Runs provided middlewares in sequence.

Parameters

middlewares

Array of middlewares.

undefined | RouterMiddleware[]

params

RouteParams

Router params that can be mutated by middlewares.

locals

RouteLocals

The locals param is used to pass local data between middlewares.

Returns

Promise<void>

Inherited from

AbstractRouter._runMiddlewares


add()

add(name, pathExpression, controller, view, options?): ServerRouter

Defined in: packages/core/src/router/AbstractRouter.ts:167

Adds a new route to router.

Parameters

name

string

The unique name of this route, identifying it among the rest of the routes in the application.

pathExpression

string

A path expression specifying the URL path part matching this route (must not contain a query string), optionally containing named parameter placeholders specified as :parameterName. The name of the parameter is terminated by a forward slash (/) or the end of the path expression string. The path expression may also contain optional parameters, which are specified as :?parameterName. It is recommended to specify the optional parameters at the end of the path expression.

controller

AsyncRouteController

The full name of Object Container alias identifying the controller associated with this route.

view

AsyncRouteView

The full name or Object Container alias identifying the view class associated with this route.

options?

Partial<RouteOptions>

Additional route options, specified how the navigation to the route will be handled. The onlyUpdate can be either a flag signalling whether the current controller and view instances should be kept if they match the ones used by the previous route; or a callback function that will receive the previous controller and view identifiers used in the previously matching route, and returns a boolean representing the value of the flag. This flag is disabled by default. The autoScroll flag signals whether the page should be scrolled to the top when the navigation takes place. This flag is enabled by default.

Returns

ServerRouter

This router.

Throws

Thrown if a route with the same name already exists.

Inherited from

AbstractRouter.add


getBaseUrl()

getBaseUrl(): string

Defined in: packages/core/src/router/AbstractRouter.ts:243

Returns the application's absolute base URL, pointing to the public root of the application.

Returns

string

The application's base URL.

Inherited from

AbstractRouter.getBaseUrl


getCurrentRouteInfo()

getCurrentRouteInfo(): object

Defined in: packages/core/src/router/AbstractRouter.ts:271

Returns the information about the currently active route.

Returns

object

params

params: RouteParams<{}>

path

path: string

route

route: AbstractRoute<string | RoutePathExpression>

Throws

Thrown if a route is not define for current path.

Inherited from

AbstractRouter.getCurrentRouteInfo


getDomain()

getDomain(): string

Defined in: packages/core/src/router/AbstractRouter.ts:250

Returns the application's domain in the following form ${protocol}//${host}.

Returns

string

The current application's domain.

Inherited from

AbstractRouter.getDomain


getHost()

getHost(): string

Defined in: packages/core/src/router/AbstractRouter.ts:257

Returns application's host (domain and, if necessary, the port number).

Returns

string

The current application's host.

Inherited from

AbstractRouter.getHost


getPath()

getPath(): string

Defined in: packages/core/src/router/ServerRouter.ts:59

Returns the current path part of the current URL, including the query string (if any).

Returns

string

The path and query parts of the current URL.

Overrides

AbstractRouter.getPath


getProtocol()

getProtocol(): string

Defined in: packages/core/src/router/AbstractRouter.ts:264

Returns the current protocol used to access the application, terminated by a colon (for example https:).

Returns

string

The current application protocol used to access the application.

Inherited from

AbstractRouter.getProtocol


getRouteHandler()

getRouteHandler(name): undefined | AbstractRoute<string | RoutePathExpression> | RouterMiddleware

Defined in: packages/core/src/router/AbstractRouter.ts:220

Returns specified handler from registered route handlers.

Parameters

name

string

The route's unique name.

Returns

undefined | AbstractRoute<string | RoutePathExpression> | RouterMiddleware

Route with given name or undefined.

Inherited from

AbstractRouter.getRouteHandler


getRouteHandlers()

getRouteHandlers(): Map<string, AbstractRoute<string | RoutePathExpression> | RouterMiddleware>

Defined in: packages/core/src/router/AbstractRouter.ts:297

Returns

Map<string, AbstractRoute<string | RoutePathExpression> | RouterMiddleware>

Inherit Doc

Inherited from

AbstractRouter.getRouteHandlers


getRouteHandlersByPath()

getRouteHandlersByPath(path): object

Defined in: packages/core/src/router/AbstractRouter.ts:615

Returns the route matching the provided URL path part (the path may contain a query) and all middlewares preceding this route definition.

Parameters

path

string

The URL path.

Returns

object

The route matching the path and middlewares preceding it or {} (empty object) if no such route exists.

middlewares

middlewares: RouterMiddleware[]

route?

optional route: AbstractRoute<string | RoutePathExpression>

Inherited from

AbstractRouter.getRouteHandlersByPath


getUrl()

getUrl(): string

Defined in: packages/core/src/router/AbstractRouter.ts:236

Returns the current absolute URL (including protocol, host, query, etc).

Returns

string

The current absolute URL.

Inherited from

AbstractRouter.getUrl


handleError()

handleError(params, options?, locals?): Promise<void | UnknownParameters>

Defined in: packages/core/src/router/AbstractRouter.ts:402

Handles an internal server error by responding with the appropriate "internal server error" error page.

Parameters

params

RouteParams

Parameters extracted from the current URL path and query.

options?

Partial<RouteOptions>

The options overrides route options defined in the routes.js configuration file.

locals?

RouteLocals

The locals param is used to pass local data between middlewares.

Returns

Promise<void | UnknownParameters>

A promise resolved when the error has been handled and the response has been sent to the client, or displayed if used at the client side.

Inherited from

AbstractRouter.handleError


handleNotFound()

handleNotFound(params, options?, locals?): Promise<void | UnknownParameters>

Defined in: packages/core/src/router/AbstractRouter.ts:454

Handles a "not found" error by responding with the appropriate "not found" error page.

Parameters

params

RouteParams

Parameters extracted from the current URL path and query.

options?

Partial<RouteOptions>

The options overrides route options defined in the routes.js configuration file.

locals?

RouteLocals

The locals param is used to pass local data between middlewares.

Returns

Promise<void | UnknownParameters>

A promise resolved when the error has been handled and the response has been sent to the client, or displayed if used at the client side.

Inherited from

AbstractRouter.handleNotFound


init()

init(config): void

Defined in: packages/core/src/router/AbstractRouter.ts:151

Initializes the router with the provided configuration.

Parameters

config

Router configuration. The $Protocol field must be the current protocol used to access the application, terminated by a colon (for example https:). The $Root field must specify the URL path pointing to the application's root. The $LanguagePartPath field must be the URL path fragment used as a suffix to the $Root field that specifies the current language. The $Host field must be the application's domain (and the port number if other than the default is used) in the following form: ${protocol}//${host}.

$Host

string

$LanguagePartPath

string

$Protocol

string

$Root

string

Returns

void

Inherited from

AbstractRouter.init


isClientError()

isClientError(reason): boolean

Defined in: packages/core/src/router/AbstractRouter.ts:507

Tests, if possible, whether the specified error was caused by the client's action (for example wrong URL or request encoding) or by a failure at the server side.

Parameters

reason

The encountered error.

Error | Error

Returns

boolean

true if the error was caused the action of the client.

Inherited from

AbstractRouter.isClientError


isRedirection()

isRedirection(reason): boolean

Defined in: packages/core/src/router/AbstractRouter.ts:514

Tests, if possible, whether the specified error lead to redirection.

Parameters

reason

The encountered error.

Error | Error

Returns

boolean

true if the error was caused the action of the redirection.

Inherited from

AbstractRouter.isRedirection


link(routeName, params): string

Defined in: packages/core/src/router/AbstractRouter.ts:338

Generates an absolute URL (including protocol, domain, etc) for the specified route by substituting the route's parameter placeholders with the provided parameter values.

Parameters

routeName

string

The unique name of the route, identifying the route to use.

params

RouteParams

Parameter values for the route's parameter placeholders. Extraneous parameters will be added as URL query.

Returns

string

An absolute URL for the specified route and parameters.

Inherited from

AbstractRouter.link


listen()

listen(): ServerRouter

Defined in: packages/core/src/router/ServerRouter.ts:66

Registers event listeners at the client side window object allowing the router to capture user's history (history pop state - going "back") and page (clicking links) navigation.

The router will start processing the navigation internally, handling the user's navigation to display the page related to the URL resulting from the user's action.

Note that the router will not prevent forms from being submitted to the server.

The effects of this method can be reverted with unlisten. This method has no effect at the server side.

Returns

ServerRouter

This router.

Overrides

AbstractRouter.listen


redirect()

redirect(url, options?): void

Defined in: packages/core/src/router/ServerRouter.ts:80

Redirects the client to the specified location.

At the server side the method results in responding to the client with a redirect HTTP status code and the Location header.

At the client side the method updates the current URL by manipulating the browser history (if the target URL is at the same domain and protocol as the current one) or performs a hard redirect (if the target URL points to a different protocol or domain).

The method will result in the router handling the new URL and routing the client to the related page if the URL is set at the client side and points to the same domain and protocol.

Parameters

url

string = '/'

The URL to which the client should be redirected.

options?

Partial<RouteOptions>

The options overrides route options defined in the routes.js configuration file.

Returns

void

Overrides

AbstractRouter.redirect


remove()

remove(name): ServerRouter

Defined in: packages/core/src/router/AbstractRouter.ts:211

Removes the specified route from the router's known routes.

Parameters

name

string

The route's unique name, identifying the route to remove.

Returns

ServerRouter

This router.

Inherited from

AbstractRouter.remove


route()

route(path, options?, action?, locals?): Promise<void | UnknownParameters>

Defined in: packages/core/src/router/AbstractRouter.ts:363

Routes the application to the route matching the providing path, renders the route page and sends the result to the client.

Parameters

path

string

The URL path part received from the client, with optional query.

options?

Partial<RouteOptions>

The options overrides route options defined in the routes.js configuration file.

action?

RouteAction

An action object describing what triggered this routing.

locals?

RouteLocals

The locals param is used to pass local data between middlewares.

Returns

Promise<void | UnknownParameters>

A promise resolved when the error has been handled and the response has been sent to the client, or displayed if used at the client side.

Inherited from

AbstractRouter.route


unlisten()

unlisten(): ServerRouter

Defined in: packages/core/src/router/ServerRouter.ts:73

Unregisters event listeners at the client side window object allowing the router to capture user's history (history pop state - going "back") and page (clicking links) navigation.

The router will stop processing the navigation internally, handling the user's navigation to display the page related to the URL resulting from the user's action.

Note that the router will not prevent forms from being submitted to the server.

The effects of this method can be reverted with unlisten. This method has no effect at the server side.

Returns

ServerRouter

This router.

Overrides

AbstractRouter.unlisten


use()

use(middleware): ServerRouter

Defined in: packages/core/src/router/AbstractRouter.ts:199

Adds a new middleware to router.

Parameters

middleware

RouterMiddleware

Middleware function accepting routeParams as a first argument, which can be mutated and locals object as second argument. This can be used to pass data between middlewares.

Returns

ServerRouter

This router.

Throws

Thrown if a middleware with the same name already exists.

Inherited from

AbstractRouter.use