/** * ------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. * See License in the project root for license information. * ------------------------------------------------------------------------------------------- */ import { CustomFetchHandler } from "../customFetchHandler.js"; import { HeadersInspectionHandler } from "../headersInspectionHandler.js"; import { ParametersNameDecodingHandler } from "../parametersNameDecodingHandler.js"; import { RetryHandler } from "../retryHandler.js"; import { UserAgentHandler } from "../userAgentHandler.js"; import { CompressionHandler } from "../compressionHandler.js"; import { UrlReplaceHandler } from "../urlReplaceHandler.js"; /** * * Class containing function(s) related to the middleware pipelines. */ export class MiddlewareFactory { /** * @param customFetch - The custom fetch implementation * Returns the default middleware chain an array with the middleware handlers * @returns an array of the middleware handlers of the default middleware chain */ // eslint-disable-next-line @typescript-eslint/no-unsafe-return static getDefaultMiddlewares(customFetch = (...args) => fetch(...args)) { // Browsers handles redirection automatically and do not require the redirectionHandler return [new RetryHandler(), new ParametersNameDecodingHandler(), new UserAgentHandler(), new HeadersInspectionHandler(), new UrlReplaceHandler(), new CustomFetchHandler(customFetch)]; } /** * @param customFetch - The custom fetch implementation * Returns the default middleware chain + performance middleware * @returns an array of the middleware handlers of the default + performance middleware chain */ // eslint-disable-next-line @typescript-eslint/no-unsafe-return static getPerformanceMiddlewares(customFetch = (...args) => fetch(...args)) { const middlewares = MiddlewareFactory.getDefaultMiddlewares(customFetch); middlewares.splice(middlewares.length - 3, 0, new CompressionHandler()); // insert CompressionHandler before HeadersInspectionHandler return middlewares; } } //# sourceMappingURL=middlewareFactory.js.map