ProxyService
Class: ProxyService<T>
Defined in: packages/runtime/src/services/proxy.service.ts:88
Proxy to starling computation api
Webda Modda
Extends
Service<T>
Type Parameters
T
T extends ProxyParameters = ProxyParameters
Constructors
Constructor
new ProxyService<
T>(name,params):ProxyService<T>
Defined in: packages/core/lib/services/service.d.ts:72
Service
Parameters
name
string
The name of the service
params
T
The parameters block define in the configuration file
Returns
ProxyService<T>
Inherited from
Service<T>.constructor
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any>
Defined in: packages/core/lib/services/iservice.d.ts:39
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
Service._compiledCapabilities
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
object
Defined in: packages/core/lib/services/service.d.ts:50
Set the Webda events here
Inherited from
Service.[WEBDA_EVENTS]
logger
protectedlogger:Logger
Defined in: packages/core/lib/services/service.d.ts:59
Logger with class context
Inherited from
Service.logger
metrics
metrics:
object
Defined in: packages/runtime/src/services/proxy.service.ts:89
Get metrics
http_errors
http_errors:
Counter
http_request_duration_milliseconds
http_request_duration_milliseconds:
Histogram
http_request_in_flight
http_request_in_flight:
Gauge
http_request_total
http_request_total:
Counter
Overrides
Service.metrics
name
readonlyname:string
Defined in: packages/core/lib/services/iservice.d.ts:19
Inherited from
Service.name
parameters
readonlyparameters:T
Defined in: packages/core/lib/services/iservice.d.ts:20
Inherited from
Service.parameters
createConfiguration?
staticoptionalcreateConfiguration?: (params) =>any
Defined in: packages/core/lib/services/iservice.d.ts:24
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Service.createConfiguration
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: packages/core/lib/services/iservice.d.ts:28
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Service.filterConfiguration
Parameters
staticParameters: typeofServiceParameters
Defined in: packages/core/lib/services/service.d.ts:46
Service parameters
Inherited from
Service.Parameters
Methods
__clean()
abstract__clean():Promise<void>
Defined in: packages/core/lib/services/service.d.ts:215
Clean the service data, can only be used in test mode
Returns
Promise<void>
Inherited from
Service.__clean
addListener()
addListener<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:80
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
Service.addListener
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: packages/core/lib/services/service.d.ts:177
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
HttpMethodType[]
the HTTP methods
executer
Function
Method to execute for this route
openapi?
OpenAPIWebdaDefinition
the OpenAPI specification
override?
boolean
whether to override existing
Returns
void
Inherited from
Service.addRoute
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: packages/core/lib/services/service.d.ts:153
Authorize a public event subscription
Parameters
_event
string
the event name
_context
OperationContext
the execution context
Returns
boolean
true if the condition is met
Inherited from
Service.authorizeClientEvent
computeParameters()
computeParameters():
void
Defined in: packages/core/lib/services/service.d.ts:77
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
Service.computeParameters
createRequest()
createRequest(
url,method,headers,callback,options?):any
Defined in: packages/runtime/src/services/proxy.service.ts:154
Create the request to the backend
Parameters
url
string
full backend URL to request
method
string
HTTP method (GET, POST, etc.)
headers
any
headers to forward
callback
(response) => void
response handler invoked when the backend responds
options?
request options
timeout?
number
request timeout in milliseconds (default 30000)
Returns
any
the outgoing ClientRequest
createWSRequest()
createWSRequest(
url,context):ClientRequest
Defined in: packages/runtime/src/services/proxy.service.ts:282
Create the request to the WS backend
Parameters
url
string
full WebSocket backend URL
context
WebContext
web context supplying headers and client info
Returns
ClientRequest
an outgoing HTTP client request configured for WS upgrade
emit()
emit<
Key>(event,data):Promise<void>
Defined in: packages/core/lib/services/service.d.ts:204
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
Service.emit
filterHeaders()
filterHeaders(
responseHeaders?):OutgoingHttpHeaders
Defined in: packages/runtime/src/services/proxy.service.ts:182
Filter backend headers to send to the client (strips CORS headers by default)
Parameters
responseHeaders?
IncomingHttpHeaders = {}
headers from the backend response
Returns
OutgoingHttpHeaders
filtered headers safe to forward to the client
forwardResponse()
forwardResponse(
response,context):Promise<void>
Defined in: packages/runtime/src/services/proxy.service.ts:200
Forward the response from the backend to the client. Override to intercept or transform the proxied response.
Parameters
response
IncomingMessage
incoming HTTP response from the backend
context
WebContext
WebContext to write the proxied response to
Returns
Promise<void>
getBackend()
getBackend(
_ctx):string
Defined in: packages/runtime/src/services/proxy.service.ts:420
Resolve the backend URL for a given request. Override for dynamic routing.
Parameters
_ctx
WebContext
web context (unused in base implementation)
Returns
string
the backend base URL to proxy to
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: packages/core/lib/services/iservice.d.ts:61
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
Service.getCapabilities
getClientEvents()
getClientEvents():
string[]
Defined in: packages/core/lib/services/service.d.ts:144
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
Service.getClientEvents
getMaxListeners()
getMaxListeners():
number
Defined in: packages/core/lib/events/asynceventemitter.d.ts:84
Returns
number
Inherited from
Service.getMaxListeners
getMetric()
getMetric<
T>(type,configuration):T
Defined in: packages/core/lib/services/service.d.ts:138
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
MetricConfiguration<T>
the configuration
Returns
T
the result
Inherited from
Service.getMetric
getName()
getName():
string
Defined in: packages/core/lib/services/service.d.ts:209
Get service name
Returns
string
the result string
Inherited from
Service.getName
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: packages/core/lib/services/service.d.ts:182
Return variables for replacement in openapi
Returns
any
the result
Inherited from
Service.getOpenApiReplacements
getOperationId()
getOperationId(
id):string
Defined in: packages/core/lib/services/service.d.ts:167
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string
the result
Inherited from
Service.getOperationId
getParameters()
getParameters():
T
Defined in: packages/core/lib/services/service.d.ts:82
Get the service parameters
Returns
T
the result
Inherited from
Service.getParameters
getRequestHeaders()
getRequestHeaders(
context):object
Defined in: packages/runtime/src/services/proxy.service.ts:210
Build request headers to forward, adding X-Forwarded-* if configured
Parameters
context
HttpContext
the original HTTP context from the client
Returns
object
header map to send to the backend including proxy headers
accept?
optionalaccept?:string
accept-encoding?
optionalaccept-encoding?:string
accept-language?
optionalaccept-language?:string
accept-patch?
optionalaccept-patch?:string
accept-ranges?
optionalaccept-ranges?:string
access-control-allow-credentials?
optionalaccess-control-allow-credentials?:string
access-control-allow-headers?
optionalaccess-control-allow-headers?:string
access-control-allow-methods?
optionalaccess-control-allow-methods?:string
access-control-allow-origin?
optionalaccess-control-allow-origin?:string
access-control-expose-headers?
optionalaccess-control-expose-headers?:string
access-control-max-age?
optionalaccess-control-max-age?:string
access-control-request-headers?
optionalaccess-control-request-headers?:string
access-control-request-method?
optionalaccess-control-request-method?:string
age?
optionalage?:string
allow?
optionalallow?:string
alt-svc?
optionalalt-svc?:string
authorization?
optionalauthorization?:string
cache-control?
optionalcache-control?:string
connection?
optionalconnection?:string
content-disposition?
optionalcontent-disposition?:string
content-encoding?
optionalcontent-encoding?:string
content-language?
optionalcontent-language?:string
content-length?
optionalcontent-length?:string
content-location?
optionalcontent-location?:string
content-range?
optionalcontent-range?:string
content-type?
optionalcontent-type?:string
cookie?
optionalcookie?:string
date?
optionaldate?:string
etag?
optionaletag?:string
expect?
optionalexpect?:string
expires?
optionalexpires?:string
forwarded?
optionalforwarded?:string
from?
optionalfrom?:string
host?
optionalhost?:string
if-match?
optionalif-match?:string
if-modified-since?
optionalif-modified-since?:string
if-none-match?
optionalif-none-match?:string
if-unmodified-since?
optionalif-unmodified-since?:string
last-modified?
optionallast-modified?:string
location?
optionallocation?:string
origin?
optionalorigin?:string
pragma?
optionalpragma?:string
proxy-authenticate?
optionalproxy-authenticate?:string
proxy-authorization?
optionalproxy-authorization?:string
public-key-pins?
optionalpublic-key-pins?:string
range?
optionalrange?:string
referer?
optionalreferer?:string
retry-after?
optionalretry-after?:string
sec-fetch-dest?
optionalsec-fetch-dest?:string
sec-fetch-mode?
optionalsec-fetch-mode?:string
sec-fetch-site?
optionalsec-fetch-site?:string
sec-fetch-user?
optionalsec-fetch-user?:string
sec-websocket-accept?
optionalsec-websocket-accept?:string
sec-websocket-extensions?
optionalsec-websocket-extensions?:string
sec-websocket-key?
optionalsec-websocket-key?:string
sec-websocket-protocol?
optionalsec-websocket-protocol?:string
sec-websocket-version?
optionalsec-websocket-version?:string
set-cookie?
optionalset-cookie?:string[]
strict-transport-security?
optionalstrict-transport-security?:string
tk?
optionaltk?:string
trailer?
optionaltrailer?:string
transfer-encoding?
optionaltransfer-encoding?:string
upgrade?
optionalupgrade?:string
user-agent?
optionaluser-agent?:string
vary?
optionalvary?:string
via?
optionalvia?:string
warning?
optionalwarning?:string
www-authenticate?
optionalwww-authenticate?:string
getService()
getService<
T>(name):ServicesMap[T]
Defined in: packages/core/lib/services/service.d.ts:131
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
Service.getService
getState()
getState():
ServiceStates
Defined in: packages/core/lib/services/service.d.ts:55
Get the current state
Returns
ServiceStates
the result
Inherited from
Service.getState
getUrl()
getUrl(
url,_methods):string
Defined in: packages/core/lib/services/service.d.ts:161
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
HttpMethodType[]
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
Service.getUrl
init()
abstractinit():Promise<ProxyService<T>>
Defined in: packages/core/lib/services/service.d.ts:198
Will be called after all the Services are created
Returns
Promise<ProxyService<T>>
Inherited from
Service.init
initMetrics()
initMetrics():
void
Defined in: packages/runtime/src/services/proxy.service.ts:99
Returns
void
Overrides
Service.initMetrics
initOperations()
initOperations():
void
Defined in: packages/core/lib/services/service.d.ts:186
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
Service.initOperations
listeners()
listeners(
eventName):Function[]
Defined in: packages/core/lib/events/asynceventemitter.d.ts:139
Get all listeners for an event
Parameters
eventName
never
the event name
Returns
Function[]
the list of results
Inherited from
Service.listeners
loadCapabilities()
protectedloadCapabilities():void
Defined in: packages/core/lib/services/service.d.ts:120
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
Service.loadCapabilities
loadParameters()
loadParameters(
params):ProxyParameters
Defined in: packages/runtime/src/services/proxy.service.ts:126
Parameters
params
any
Returns
log()
log(
level, ...args):void
Defined in: packages/core/lib/services/service.d.ts:226
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
Service.log
off()
off<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:116
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
Service.off
on()
on<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:102
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
Service.on
once()
once<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:95
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
Service.once
onError()
onError(
e):void
Defined in: packages/runtime/src/services/proxy.service.ts:244
Handle proxy request errors (logged at ERROR level)
Parameters
e
any
the error that occurred during proxying
Returns
void
proxy()
proxy(
ctx,host,url):Promise<void>
Defined in: packages/runtime/src/services/proxy.service.ts:235
Proxy the request to a backend after stripping the local URL prefix
Parameters
ctx
WebContext
incoming web context
host
string
backend base URL to proxy to
url
string
local URL prefix to strip before forwarding
Returns
Promise<void>
promise resolving when the proxied response is fully streamed
proxyRoute()
proxyRoute(
ctx):Promise<void>
Defined in: packages/runtime/src/services/proxy.service.ts:430
Main proxy route handler — enforces authentication if configured, then proxies
Parameters
ctx
WebContext
incoming web context
Returns
Promise<void>
proxyWS()
proxyWS(
req,socket,head):Promise<void>
Defined in: packages/runtime/src/services/proxy.service.ts:255
Handle an HTTP upgrade request and proxy it as a WebSocket connection
Parameters
req
any
raw HTTP incoming message from the upgrade event
socket
any
duplex socket from the upgrade event
head
any
first packet of the upgraded stream
Returns
Promise<void>
promise resolving when the WebSocket proxy is set up
rawProxy()
rawProxy(
ctx,host,url?,headers?):Promise<void>
Defined in: packages/runtime/src/services/proxy.service.ts:358
Low-level HTTP proxy: pipes request body to backend and streams the response back
Parameters
ctx
WebContext
incoming web context
host
string
backend base URL
url?
string = "/"
path to append to the host
headers?
any = {}
extra headers to merge into the forwarded request
Returns
Promise<void>
rawProxyWS()
rawProxyWS(
context,url,socket):Promise<void>
Defined in: packages/runtime/src/services/proxy.service.ts:299
Low-level WebSocket proxy: pipes the client socket to the backend socket
Parameters
context
WebContext
web context for header forwarding
url
string
full backend WebSocket URL
socket
any
client-side duplex socket from the HTTP upgrade
Returns
Promise<void>
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:122
Type Parameters
Key
Key extends never
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
Service.removeAllListeners
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:109
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
Service.removeListener
resolve()
resolve():
ProxyService<T>
Defined in: packages/runtime/src/services/proxy.service.ts:134
Register an HTTP upgrade listener for WebSocket proxying
Returns
ProxyService<T>
this instance for chaining
Overrides
Service.resolve
setMaxListeners()
setMaxListeners(
n):this
Defined in: packages/core/lib/events/asynceventemitter.d.ts:88
Parameters
n
number
Returns
this
Inherited from
Service.setMaxListeners
stop()
stop():
Promise<void>
Defined in: packages/core/lib/services/service.d.ts:86
Shutdown the current service if action need to be taken
Returns
Promise<void>
Inherited from
Service.stop
toJSON()
toJSON():
string
Defined in: packages/core/lib/services/service.d.ts:191
Prevent service to be serialized
Returns
string
the result
Inherited from
Service.toJSON
toString()
toString():
string
Defined in: packages/core/lib/services/service.d.ts:91
Return service representation
Returns
string
the result
Inherited from
Service.toString