kronos-interceptor
introspects / modifies requests as they pass between endpoints
const ki = ; const endpoint = { return 'aName'; } {};const interceptor1 = {}endpoint;const interceptor2 = {}endpoint; interceptor1connected = interceptor2 const request = {};const promise = interceptor1;
API
Table of Contents
- rejectingReceiver
- ConnectorMixin
- Interceptor
- TimeoutInterceptor
- rejectUnlessResolvedWithin
- StatsCollectorInterceptor
- LimitingInterceptor
rejectingReceiver
rejecting receiver used to signal a not present connection when used always delivers a rejecting promise
Parameters
request
ConnectorMixin
Mixin to make endpoints/interceptors connectable Forms a single linked list
Parameters
superclass
Interceptor
Extends ConnectorMixin(class {})
Base interceptor. The base class for all the interceptors Calls configure() and reset().
Parameters
config
Object The interceptor configuration object.endpoint
Object the endpoint object this interceptor will be attached to.
logger
use endpoint owner as logger
type
The instance method returning the type. Defaults to the constructors name (class name)
Returns string
configurationAttributes
Meta description of the configuration
Returns Object
configure
Takes attribute values from config parameters and copies them over to the object. Copying is done according to configurationAttributes Which means we loop over all configuration attributes and then for each attribute decide if we use the default, call a setter function or simply assign the attribute value
Parameters
config
Object
toJSON
Deliver the json representation
Returns Object json representation
reset
forget all accumulated information
receive
The receive method. This method receives the request from the leading interceptor and calls the trailing interceptor
Parameters
request
Object the request from the leading interceptoroldRequest
Object the oldRequest from the leading interceptor. This is a special case. As some interceptors are in charge of copying and creating the request objects, the step will call the interceptor chain with the both requests. At some point of the interceptor chain only the request itself will survive. But all interceptors designed to be inserted early in the interceptor chain of a sending endpoint should pass both requests to the next interceptor.
Returns Promise
configurationAttributes
Meta description of the configuration
Returns Object
TimeoutInterceptor
Extends Interceptor
Rejects a request if it does not resolve in a given time
name
Returns string 'timeout'
rejectUnlessResolvedWithin
Parameters
Returns Promise
StatsCollectorInterceptor
Extends Interceptor
Interceptor to collect processing time, number of processed and failed requests
receive
Logs the time the requests takes
Parameters
request
oldRequest
name
Returns string 'collect-request-stats'
LimitingInterceptor
Extends Interceptor
Limits the number of concurrent requests. Requests can be delayed or rejected. Sample config: [ { count: 20 }, { count: 10, delay: 100 }, { count: 5, delay: 10 } ] 1 - 4 : no delay 5 - 9 : 10ms delay 10 - 19 : 100ms delay 20 : reject default is to reject when more than 10 requests are on the way
Parameters
config
endpoint
name
Returns string 'request-limit'
install
With npm do:
npm install kronos-interceptor
license
BSD-2-Clause