Skip to main content

ProxyService

@webda/runtime


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​

protected logger: 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​

readonly name: string

Defined in: packages/core/lib/services/iservice.d.ts:19

Inherited from​

Service.name


parameters​

readonly parameters: T

Defined in: packages/core/lib/services/iservice.d.ts:20

Inherited from​

Service.parameters


createConfiguration?​

static optional createConfiguration?: (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?​

static optional filterConfiguration?: (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​

static Parameters: typeof ServiceParameters

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()​

protected addRoute(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?​

optional accept?: string

accept-encoding?​

optional accept-encoding?: string

accept-language?​

optional accept-language?: string

accept-patch?​

optional accept-patch?: string

accept-ranges?​

optional accept-ranges?: string

access-control-allow-credentials?​

optional access-control-allow-credentials?: string

access-control-allow-headers?​

optional access-control-allow-headers?: string

access-control-allow-methods?​

optional access-control-allow-methods?: string

access-control-allow-origin?​

optional access-control-allow-origin?: string

access-control-expose-headers?​

optional access-control-expose-headers?: string

access-control-max-age?​

optional access-control-max-age?: string

access-control-request-headers?​

optional access-control-request-headers?: string

access-control-request-method?​

optional access-control-request-method?: string

age?​

optional age?: string

allow?​

optional allow?: string

alt-svc?​

optional alt-svc?: string

authorization?​

optional authorization?: string

cache-control?​

optional cache-control?: string

connection?​

optional connection?: string

content-disposition?​

optional content-disposition?: string

content-encoding?​

optional content-encoding?: string

content-language?​

optional content-language?: string

content-length?​

optional content-length?: string

content-location?​

optional content-location?: string

content-range?​

optional content-range?: string

content-type?​

optional content-type?: string

optional cookie?: string

date?​

optional date?: string

etag?​

optional etag?: string

expect?​

optional expect?: string

expires?​

optional expires?: string

forwarded?​

optional forwarded?: string

from?​

optional from?: string

host?​

optional host?: string

if-match?​

optional if-match?: string

if-modified-since?​

optional if-modified-since?: string

if-none-match?​

optional if-none-match?: string

if-unmodified-since?​

optional if-unmodified-since?: string

last-modified?​

optional last-modified?: string

location?​

optional location?: string

origin?​

optional origin?: string

pragma?​

optional pragma?: string

proxy-authenticate?​

optional proxy-authenticate?: string

proxy-authorization?​

optional proxy-authorization?: string

public-key-pins?​

optional public-key-pins?: string

range?​

optional range?: string

referer?​

optional referer?: string

retry-after?​

optional retry-after?: string

sec-fetch-dest?​

optional sec-fetch-dest?: string

sec-fetch-mode?​

optional sec-fetch-mode?: string

sec-fetch-site?​

optional sec-fetch-site?: string

sec-fetch-user?​

optional sec-fetch-user?: string

sec-websocket-accept?​

optional sec-websocket-accept?: string

sec-websocket-extensions?​

optional sec-websocket-extensions?: string

sec-websocket-key?​

optional sec-websocket-key?: string

sec-websocket-protocol?​

optional sec-websocket-protocol?: string

sec-websocket-version?​

optional sec-websocket-version?: string

optional set-cookie?: string[]

strict-transport-security?​

optional strict-transport-security?: string

tk?​

optional tk?: string

trailer?​

optional trailer?: string

transfer-encoding?​

optional transfer-encoding?: string

upgrade?​

optional upgrade?: string

user-agent?​

optional user-agent?: string

vary?​

optional vary?: string

via?​

optional via?: string

warning?​

optional warning?: string

www-authenticate?​

optional www-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()​

abstract init(): 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()​

protected loadCapabilities(): 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​

ProxyParameters


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

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