Router
Class: Router<T>
Defined in: packages/core/src/rest/router.service.ts:202
Manage Route resolution
Webda Modda
Extends
Service<T>
Type Parameters
T
T extends RouterParameters = RouterParameters
Implements
Constructors
Constructor
new Router<
T>(name,params):Router<T>
Defined in: packages/core/src/services/service.ts:191
Service
Parameters
name
string
The name of the service
params
T
The parameters block define in the configuration file
Returns
Router<T>
Inherited from
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any> ={}
Defined in: packages/core/src/services/iservice.ts:49
Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.
Populated during Service.resolve by reading the service's entry in
webda.module.json. Each key is a capability name (e.g., "request-filter"),
and the value is an empty object {} by default. Override getCapabilities
to provide capability-specific configuration or to conditionally disable capabilities.
See
getCapabilities
Inherited from
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
object
Defined in: packages/core/src/services/service.ts:165
Set the Webda events here
Inherited from
aliases
protectedaliases:Record<string,RouteAliasDefinition> ={}
Defined in: packages/core/src/rest/router.service.ts:215
Route aliases configuration
aliasMap
protectedaliasMap:CompiledAlias[] =[]
Defined in: packages/core/src/rest/router.service.ts:219
Compiled route aliases
logger
protectedlogger:Logger
Defined in: packages/core/src/services/service.ts:178
Logger with class context
Inherited from
metrics?
protectedoptionalmetrics?:object
Defined in: packages/core/src/services/service.ts:182
Get metrics
Inherited from
models
protectedmodels:Map<string,string>
Defined in: packages/core/src/rest/router.service.ts:211
name
readonlyname:string
Defined in: packages/core/src/services/iservice.ts:26
Inherited from
parameters
readonlyparameters:T
Defined in: packages/core/src/services/iservice.ts:27
Inherited from
pathMap
protectedpathMap:object[]
Defined in: packages/core/src/rest/router.service.ts:210
config
config:
RouteInfo
url
url:
string
routes
protectedroutes:Map<string,RouteInfo[]>
Defined in: packages/core/src/rest/router.service.ts:206
Routes
createConfiguration?
staticoptionalcreateConfiguration?: (params) =>any
Defined in: packages/core/src/services/iservice.ts:32
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: packages/core/src/services/iservice.ts:37
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Parameters
staticParameters: typeofServiceParameters=ServiceParameters
Defined in: packages/core/src/services/service.ts:161
Service parameters
Inherited from
Methods
__clean()
abstract__clean():Promise<void>
Defined in: packages/core/src/services/service.ts:494
Clean the service data, can only be used in test mode
Returns
Promise<void>
Inherited from
addAlias()
addAlias(
url,def):void
Defined in: packages/core/src/rest/router.service.ts:375
Add a route alias dynamically
Parameters
url
string
the alias URL pattern
def
string | RouteAliasDefinition
target URL or RouteAliasDefinition
Returns
void
Implementation of
addListener()
addListener<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:83
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: packages/core/src/services/service.ts:386
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
the HTTP methods
executer
Function
Method to execute for this route
openapi?
the OpenAPI specification
override?
boolean = false
whether to override existing
Returns
void
Inherited from
addRouteToRouter()
addRouteToRouter(
url,info):void
Defined in: packages/core/src/rest/router.service.ts:321
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
info
the type of executor
Returns
void
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: packages/core/src/services/service.ts:339
Authorize a public event subscription
Parameters
_event
string
the event name
_context
the execution context
Returns
boolean
true if the condition is met
Inherited from
checkCORSRequest()
protectedcheckCORSRequest(ctx):Promise<boolean>
Defined in: packages/core/src/rest/router.service.ts:1095
Verify if an origin is allowed to do request on the API
Parameters
ctx
the operation context
Returns
Promise<boolean>
true if the condition is met
checkRequest()
checkRequest(
ctx):Promise<boolean>
Defined in: packages/core/src/rest/router.service.ts:1080
Verify if a request can be done
Parameters
ctx
the operation context
Returns
Promise<boolean>
true if the condition is met
comparePath()
protectedcomparePath(a,b):number
Defined in: packages/core/src/rest/router.service.ts:467
Compare two route paths for sorting, prioritizing literal segments over parameters
Parameters
a
any
the first route
b
any
the second route
Returns
number
the result number
compileTemplate()
protectedcompileTemplate(url):Pick<RouteInfo,"_uriTemplateParse"|"_queryParams"|"_queryCatchAll">
Defined in: packages/core/src/rest/router.service.ts:487
Compile a URI template with optional query parameter handling
Parameters
url
string
the URL pattern
Returns
Pick<RouteInfo, "_uriTemplateParse" | "_queryParams" | "_queryCatchAll">
compiled template parser and query param definitions
completeOpenAPI()
completeOpenAPI(
openapi,skipHidden?):void
Defined in: packages/core/src/rest/router.service.ts:778
Add all known routes to paths
Parameters
openapi
Document
to complete
skipHidden?
boolean = true
add hidden routes or not
Returns
void
computeParameters()
computeParameters():
void
Defined in: packages/core/src/services/service.ts:200
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
discoverFilters()
discoverFilters(
services):void
Defined in: packages/core/src/rest/router.service.ts:1269
Auto-discover services that declare request-filter or cors-filter capabilities
and register them with the Router.
Called during framework initialization (after all services are resolved and
initialized) to replace manual registerRequestFilter(this) calls. Iterates
all services, checks their Service.getCapabilities return value, and
registers matching services as request or CORS filters.
Parameters
services
Iterable<Service<ServiceParameters, { }>>
Iterable of initialized services to scan for filter capabilities
Returns
void
Example
// Called automatically by Core.init():
router.discoverFilters(Object.values(this.services));
// A service with "request-filter" capability is auto-registered:
class HawkService extends Service implements RequestFilter {
// getCapabilities() returns { "request-filter": {}, "cors-filter": {} }
// → automatically registered with router as both request and CORS filter
}
Implementation of
discoverRoutes()
discoverRoutes(
services):void
Defined in: packages/core/src/rest/router.service.ts:1291
Auto-discover routes declared with @Route (or the legacy
constructor.routes bucket) on each service, and register them with the
router. Called once from Core.init() after all services have resolved —
services don't have to push their own routes anymore.
Parameters
services
Iterable<Service<ServiceParameters, { }>>
iterable of initialized services to scan
Returns
void
Implementation of
emit()
emit<
Key>(event,data):Promise<void>
Defined in: packages/core/src/services/service.ts:475
Emit the event with data and wait for Promise to finish if listener returned a Promise
Type Parameters
Key
Key extends never
Parameters
event
Key
the event name
data
object[Key]
the data to process
Returns
Promise<void>
Inherited from
execute()
execute(
ctx):Promise<void>
Defined in: packages/core/src/rest/router.service.ts:1006
Execute the matched route handler for a web context
Parameters
ctx
WebContext<any, any, any>
the operation context
Returns
Promise<void>
Implementation of
exportOpenAPI()
exportOpenAPI(
skipHidden?):Document
Defined in: packages/core/src/rest/router.service.ts:1126
Export OpenAPI
Parameters
skipHidden?
boolean = true
whether to skip hidden entries
Returns
Document
the result
Implementation of
getAliases()
getAliases():
Record<string,RouteAliasDefinition>
Defined in: packages/core/src/rest/router.service.ts:402
Return all registered route aliases
Returns
Record<string, RouteAliasDefinition>
map of alias URLs to definitions
Implementation of
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: packages/core/src/services/iservice.ts:77
Return the capabilities of this service.
By default returns capabilities detected at compile-time from
Returns
Record<string, any>
the result
Webda Capability-tagged
interfaces in webda.module.json.
Override to disable capabilities based on configuration:
getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}
Inherited from
getClientEvents()
getClientEvents():
string[]
Defined in: packages/core/src/services/service.ts:327
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
getFinalUrl()
getFinalUrl(
url):string
Defined in: packages/core/src/rest/router.service.ts:288
Include prefix to the url if not present
Parameters
url
string
the URL
Returns
string
the result string
getMatchTarget()
protectedgetMatchTarget(routeUrl,finalUrl):string
Defined in: packages/core/src/rest/router.service.ts:563
What a request URL is matched against for a route: a route declaring a
query template ({?q,page?}, {?rest*}) matches the whole URL, any other
route matches the path alone, so an extra query string (?v=123) neither
prevents the match nor ends up in a path variable
Parameters
routeUrl
string
the route URL
finalUrl
string
the request URL, from getFinalUrl
Returns
string
the URL to match
getMaxListeners()
getMaxListeners():
number
Defined in: packages/core/src/events/asynceventemitter.ts:90
Returns
number
Inherited from
getMetric()
getMetric<
T>(type,configuration):T
Defined in: packages/core/src/services/service.ts:309
Add service name label
Type Parameters
T
T = Gauge<string> | Counter<string> | Histogram<string>
Parameters
type
CustomConstructor<T, [MetricConfiguration<T>]>
the type to look up
configuration
the configuration
Returns
T
the result
Inherited from
getModelUrl()
getModelUrl(
model):string
Defined in: packages/core/src/rest/router.service.ts:276
Return the route for model
Parameters
model
string | Storable<any, any>
the model to use
Returns
string
the result
getName()
getName():
string
Defined in: packages/core/src/services/service.ts:485
Get service name
Returns
string
the result string
Inherited from
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: packages/core/src/services/service.ts:415
Return variables for replacement in openapi
Returns
any
the result
Inherited from
Service.getOpenApiReplacements
getOpenAPISchema()
protectedgetOpenAPISchema(schema):any
Defined in: packages/core/src/rest/router.service.ts:760
Convert a schema name or object to an OpenAPI $ref or inline schema
Parameters
schema
any
the schema object
Returns
any
the result
getOperationId()
getOperationId(
id):string
Defined in: packages/core/src/services/service.ts:373
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string
the result
Inherited from
getParameters()
getParameters():
T
Defined in: packages/core/src/services/service.ts:208
Get the service parameters
Returns
T
the result
Inherited from
getRouteFromUrl()
getRouteFromUrl(
ctx,method,url):RouteInfo
Defined in: packages/core/src/rest/router.service.ts:733
Get the route from a method / url
Parameters
ctx
the operation context
method
the HTTP method
url
string
the URL
Returns
the result
getRouteMethodsFromUrl()
getRouteMethodsFromUrl(
url):HttpMethodType[]
Defined in: packages/core/src/rest/router.service.ts:672
Get all method for a specific url
Parameters
url
any
the URL
Returns
the list of results
getRoutes()
getRoutes():
Map<string,RouteInfo[]>
Defined in: packages/core/src/rest/router.service.ts:311
Return routes
Returns
Map<string, RouteInfo[]>
the result
getService()
getService<
T>(name):ServicesMap[T]
Defined in: packages/core/src/services/service.ts:299
Get a service by name
Type Parameters
T
T extends keyof ServicesMap
Parameters
name
T
the name to use
Returns
ServicesMap[T]
the result map
Deprecated
Use useService, might reconsider
Inherited from
getState()
getState():
ServiceStates
Defined in: packages/core/src/services/service.ts:171
Get the current state
Returns
the result
Inherited from
getUrl()
getUrl(
url,_methods):string
Defined in: packages/core/src/services/service.ts:350
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
init()
abstractinit():Promise<Router<T>>
Defined in: packages/core/src/services/service.ts:465
Will be called after all the Services are created
Returns
Promise<Router<T>>
Inherited from
initMetrics()
initMetrics():
void
Defined in: packages/core/src/services/service.ts:289
Init the metrics
Returns
void
Inherited from
initOperations()
initOperations():
void
Defined in: packages/core/src/services/service.ts:422
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
listeners()
listeners(
eventName):Function[]
Defined in: packages/core/src/events/asynceventemitter.ts:183
Get all listeners for an event
Parameters
eventName
never
the event name
Returns
Function[]
the list of results
Inherited from
loadCapabilities()
protectedloadCapabilities():void
Defined in: packages/core/src/services/service.ts:269
Load capabilities from webda.module.json metadata into _compiledCapabilities.
Called during resolve after dependency injection. Reads the service's
type name from parameters, looks it up in the application's module metadata
(moddas or beans section), and populates _compiledCapabilities with an
empty object for each declared capability name.
Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).
Returns
void
Example
// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }
See
getCapabilities
Inherited from
log()
log(
level, ...args):void
Defined in: packages/core/src/services/service.ts:515
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
matchTemplate()
protectedmatchTemplate(entry,routeUrl,finalUrl):Record<string,any>
Defined in: packages/core/src/rest/router.service.ts:574
Match a URL against an entry (route or alias)
Parameters
entry
route or alias info
routeUrl
string
the route or alias URL template
finalUrl
string
the incoming request URL
Returns
Record<string, any>
extracted parameters map, or undefined if no match
off()
off<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:141
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
on()
on<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:119
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
once()
once<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:108
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
openapi()
openapi(
output?,includeHidden?):void
Defined in: packages/core/src/rest/router.service.ts:1105
Export the OpenAPI definition as JSON to stdout
Parameters
output?
string
file path to write to (prints to stdout if omitted)
includeHidden?
boolean
include hidden routes in the output
Returns
void
registerCORSFilter()
registerCORSFilter(
filter):void
Defined in: packages/core/src/rest/router.service.ts:1242
Register a CORS request filtering
Does not apply in devMode
Parameters
filter
the filter to apply
Returns
void
Implementation of
registerModelUrl()
registerModelUrl(
model,url):void
Defined in: packages/core/src/rest/router.service.ts:234
Registration of a model
Parameters
model
string
the model to use
url
string
the URL
Returns
void
Implementation of
registerRequestFilter()
registerRequestFilter(
filter):void
Defined in: packages/core/src/rest/router.service.ts:1232
Register a request filtering
Will apply to all requests regardless of the devMode
Parameters
filter
the filter to apply
Returns
void
Implementation of
remapRoutes()
remapRoutes():
void
Defined in: packages/core/src/rest/router.service.ts:412
Reinit all routes and aliases
It will readd the URITemplates if needed Sort all routes and aliases again
Returns
void
removeAlias()
removeAlias(
url):void
Defined in: packages/core/src/rest/router.service.ts:390
Remove a route alias dynamically
Parameters
url
string
the alias URL pattern to remove
Returns
void
Implementation of
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: packages/core/src/events/asynceventemitter.ts:150
Type Parameters
Key
Key extends never
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: packages/core/src/events/asynceventemitter.ts:130
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
removeRoute()
removeRoute(
url,info?):void
Defined in: packages/core/src/rest/router.service.ts:358
Remove a route dynamicly
Parameters
url
string
to remove
info?
RouteInfo = undefined
the information object
Returns
void
resolve()
resolve():
Router<T>
Defined in: packages/core/src/rest/router.service.ts:250
Resolve dependencies and wire up core lifecycle listeners.
The Router pulls its inputs from events rather than being driven by
Core.init() directly:
Webda.Init.Services— scan every resolved service for@Routemetadata and filter capabilities.Webda.Init— finalize the URI template index after all routes (dynamic or decorator-based) have been registered.
Returns
Router<T>
the result
Overrides
resolveAlias()
resolveAlias(
ctx,method,url):object
Defined in: packages/core/src/rest/router.service.ts:627
Resolve an incoming URL against route aliases
Parameters
ctx
the operation context
method
the HTTP method
url
string
the URL to resolve (relative to prefix)
Returns
object
resolved alias target and metadata, or undefined
alias
alias:
string
mode
mode:
RouteAliasMode
redirectCode?
optionalredirectCode?:number
url
url:
string
Implementation of
setMaxListeners()
setMaxListeners(
n):this
Defined in: packages/core/src/events/asynceventemitter.ts:97
Parameters
n
number
Returns
this
Inherited from
stop()
stop():
Promise<void>
Defined in: packages/core/src/services/service.ts:216
Shutdown the current service if action need to be taken
Returns
Promise<void>
Inherited from
toJSON()
toJSON():
string
Defined in: packages/core/src/services/service.ts:454
Prevent service to be serialized
Returns
string
the result
Inherited from
toString()
toString():
string
Defined in: packages/core/src/services/service.ts:224
Return service representation
Returns
string
the result
Inherited from
writeNotFound()
protectedwriteNotFound(ctx,method,url):void
Defined in: packages/core/src/rest/router.service.ts:1067
Answer a request no route matches: 404 with the same error body a thrown
NotFound gets, so clients don't receive an empty response
Parameters
ctx
WebContext<any, any, any>
the web context
method
string
the HTTP method
url
string
the requested URL
Returns
void