@barchart/common-js
Version:
Library of common JavaScript utilities
57 lines (47 loc) • 1.22 kB
JavaScript
import * as assert from './../../../lang/assert.js';
import RequestInterceptor from './RequestInterceptor.js';
/**
* @typedef {import('./../definitions/Endpoint.js').default} Endpoint
*/
/**
* A {@link RequestInterceptor} that delegates work to two other instances.
*
* @public
* @extends {RequestInterceptor}
*/
export default class CompositeRequestInterceptor extends RequestInterceptor {
#a;
#b;
/**
* @param {RequestInterceptor} a - The first interceptor to process.
* @param {RequestInterceptor} b - The second interceptor to process.
*/
constructor(a, b) {
super();
assert.argumentIsRequired(a, 'a', RequestInterceptor, 'RequestInterceptor');
assert.argumentIsRequired(b, 'b', RequestInterceptor, 'RequestInterceptor');
this.#a = a;
this.#b = b;
}
/**
* @protected
* @override
* @async
* @param {object} request
* @param {Endpoint} endpoint
* @returns {Promise<*>}
*/
async _onProcess(request, endpoint) {
const adjusted = await this.#a.process(request, endpoint);
return this.#b.process(adjusted, endpoint);
}
/**
* Returns a string representation.
*
* @public
* @returns {string}
*/
toString() {
return '[CompositeRequestInterceptor]';
}
}