UNPKG

@barchart/common-js

Version:
57 lines (47 loc) 1.22 kB
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]'; } }