Skip to content

Commit cd5e282

Browse files
committed
feat: disable default compression
1 parent c72f3e8 commit cd5e282

9 files changed

+79
-36
lines changed

packages/http/fetch/src/httpClient.ts

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ export class HttpClient {
3131
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3232
middlewares.push(new CustomFetchHandler(customFetch as any));
3333
}
34+
// log all the middleware names
35+
console.debug("Registered middleware" + middlewares.map(m => m.constructor.name));
36+
// create a hint of the performance middleware
37+
console.debug("Hint: To improve performance, use MiddlewareFactory.getPerformanceMiddlewares(customFetch) instead of MiddlewareFactory.getDefaultMiddlewares(customFetch)");
3438

3539
// Set the middleware chain
3640
this.setMiddleware(...middlewares);

packages/http/fetch/src/middlewares/browser/middlewareFactory.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ export class MiddlewareFactory {
2727
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
2828
public static getDefaultMiddlewares(customFetch: (request: string, init: RequestInit) => Promise<Response> = (...args) => fetch(...args) as any): Middleware[] {
2929
// Browsers handles redirection automatically and do not require the redirectionHandler
30-
return [new RetryHandler(), new ParametersNameDecodingHandler(), new UserAgentHandler(), new CompressionHandler(), new HeadersInspectionHandler(), new UrlReplaceHandler(), new CustomFetchHandler(customFetch)];
30+
return [new RetryHandler(), new ParametersNameDecodingHandler(), new UserAgentHandler(), new HeadersInspectionHandler(), new UrlReplaceHandler(), new CustomFetchHandler(customFetch)];
31+
}
32+
/**
33+
* @param customFetch - The custom fetch implementation
34+
* Returns the default middleware chain + performance middleware
35+
* @returns an array of the middleware handlers of the default + performance middleware chain
36+
*/
37+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
38+
public static getPerformanceMiddlewares(customFetch: (request: string, init: RequestInit) => Promise<Response> = (...args) => fetch(...args) as any): Middleware[] {
39+
const middlewares = MiddlewareFactory.getDefaultMiddlewares(customFetch);
40+
middlewares.splice(middlewares.length - 2, 0, new CompressionHandler()); // insert CompressionHandler before HeadersInspectionHandler
41+
return middlewares;
3142
}
3243
}

packages/http/fetch/src/middlewares/middlewareFactory.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ export class MiddlewareFactory {
2727
*/
2828
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
2929
public static getDefaultMiddlewares(customFetch: (request: string, init: RequestInit) => Promise<Response> = (...args) => fetch(...args) as any): Middleware[] {
30-
return [new RetryHandler(), new RedirectHandler(), new ParametersNameDecodingHandler(), new UserAgentHandler(), new CompressionHandler(), new HeadersInspectionHandler(), new UrlReplaceHandler(), new CustomFetchHandler(customFetch)];
30+
return [new RetryHandler(), new RedirectHandler(), new ParametersNameDecodingHandler(), new UserAgentHandler(), new HeadersInspectionHandler(), new UrlReplaceHandler(), new CustomFetchHandler(customFetch)];
31+
}
32+
/**
33+
* @param customFetch - The custom fetch implementation
34+
* Returns the default middleware chain + performance middleware
35+
* @returns an array of the middleware handlers of the default + performance middleware chain
36+
*/
37+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
38+
public static getPerformanceMiddlewares(customFetch: (request: string, init: RequestInit) => Promise<Response> = (...args) => fetch(...args) as any): Middleware[] {
39+
const middlewares = MiddlewareFactory.getDefaultMiddlewares(customFetch);
40+
middlewares.splice(middlewares.length - 2, 0, new CompressionHandler()); // insert CompressionHandler before HeadersInspectionHandler
41+
return middlewares;
3142
}
3243
}

packages/http/fetch/test/browser/httpClient.ts

+6-8
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,9 @@ describe("browser - HTTPClient.ts", () => {
4040
assert.isTrue(next instanceof RedirectHandler);
4141
assert.isTrue(next?.next instanceof ParametersNameDecodingHandler);
4242
assert.isTrue(next?.next?.next instanceof UserAgentHandler);
43-
assert.isTrue(next?.next?.next?.next instanceof CompressionHandler);
44-
assert.isTrue(next?.next?.next?.next?.next instanceof HeadersInspectionHandler);
45-
assert.isTrue(next?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
46-
assert.isTrue(next?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
43+
assert.isTrue(next?.next?.next?.next instanceof HeadersInspectionHandler);
44+
assert.isTrue(next?.next?.next?.next?.next instanceof UrlReplaceHandler);
45+
assert.isTrue(next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
4746
});
4847

4948
it("Should set default middleware array with customFetchHandler if middleware parameter is undefined && customFetch is defined", () => {
@@ -57,10 +56,9 @@ describe("browser - HTTPClient.ts", () => {
5756
assert.isTrue(next instanceof RedirectHandler);
5857
assert.isTrue(next?.next instanceof ParametersNameDecodingHandler);
5958
assert.isTrue(next?.next?.next instanceof UserAgentHandler);
60-
assert.isTrue(next?.next?.next?.next instanceof CompressionHandler);
61-
assert.isTrue(next?.next?.next?.next?.next instanceof HeadersInspectionHandler);
62-
assert.isTrue(next?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
63-
assert.isTrue(next?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
59+
assert.isTrue(next?.next?.next?.next instanceof HeadersInspectionHandler);
60+
assert.isTrue(next?.next?.next?.next?.next instanceof UrlReplaceHandler);
61+
assert.isTrue(next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
6462
});
6563

6664
it("Should set to default fetch handler middleware array if middleware parameter is null && customFetch is undefined", () => {

packages/http/fetch/test/browser/kiotaClientFactory.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ describe("browser - KiotaClientFactory", () => {
2020
assert.isTrue(middleware?.next instanceof RedirectHandler);
2121
assert.isTrue(middleware?.next?.next instanceof ParametersNameDecodingHandler);
2222
assert.isTrue(middleware?.next?.next?.next instanceof UserAgentHandler);
23-
assert.isTrue(middleware?.next?.next?.next?.next instanceof CompressionHandler);
24-
assert.isTrue(middleware?.next?.next?.next?.next?.next instanceof HeadersInspectionHandler);
25-
assert.isTrue(middleware?.next?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
26-
assert.isTrue(middleware?.next?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
23+
assert.isTrue(middleware?.next?.next?.next?.next instanceof HeadersInspectionHandler);
24+
assert.isTrue(middleware?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
25+
assert.isTrue(middleware?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
2726
});
2827
});

packages/http/fetch/test/browser/middlewareFactory.ts

+16-5
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,25 @@ import { CompressionHandler } from "../../src/middlewares/compressionHandler";
1212
describe("browser - MiddlewareFactory", () => {
1313
it("Should return the default pipeline", () => {
1414
const defaultMiddleWareArray = MiddlewareFactory.getDefaultMiddlewares();
15-
assert.equal(defaultMiddleWareArray.length, 8);
15+
assert.equal(defaultMiddleWareArray.length, 7);
1616
assert.isTrue(defaultMiddleWareArray[0] instanceof RetryHandler);
1717
assert.isTrue(defaultMiddleWareArray[1] instanceof RedirectHandler);
1818
assert.isTrue(defaultMiddleWareArray[2] instanceof ParametersNameDecodingHandler);
1919
assert.isTrue(defaultMiddleWareArray[3] instanceof UserAgentHandler);
20-
assert.isTrue(defaultMiddleWareArray[4] instanceof CompressionHandler);
21-
assert.isTrue(defaultMiddleWareArray[5] instanceof HeadersInspectionHandler);
22-
assert.isTrue(defaultMiddleWareArray[6] instanceof UrlReplaceHandler);
23-
assert.isTrue(defaultMiddleWareArray[7] instanceof CustomFetchHandler);
20+
assert.isTrue(defaultMiddleWareArray[4] instanceof HeadersInspectionHandler);
21+
assert.isTrue(defaultMiddleWareArray[5] instanceof UrlReplaceHandler);
22+
assert.isTrue(defaultMiddleWareArray[6] instanceof CustomFetchHandler);
2423
});
24+
it("Should return the performance pipeline", () => {
25+
const defaultMiddleWareArray = MiddlewareFactory.getPerformanceMiddlewares();
26+
assert.equal(defaultMiddleWareArray.length, 8);
27+
assert.isTrue(defaultMiddleWareArray[0] instanceof RetryHandler);
28+
assert.isTrue(defaultMiddleWareArray[1] instanceof RedirectHandler);
29+
assert.isTrue(defaultMiddleWareArray[2] instanceof ParametersNameDecodingHandler);
30+
assert.isTrue(defaultMiddleWareArray[3] instanceof UserAgentHandler);
31+
assert.isTrue(defaultMiddleWareArray[4] instanceof CompressionHandler);
32+
assert.isTrue(defaultMiddleWareArray[5] instanceof HeadersInspectionHandler);
33+
assert.isTrue(defaultMiddleWareArray[6] instanceof UrlReplaceHandler);
34+
assert.isTrue(defaultMiddleWareArray[7] instanceof CustomFetchHandler);
35+
});
2536
});

packages/http/fetch/test/node/MiddlewareFactory.ts

+17-5
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,27 @@ import { CompressionHandler } from "../../src/middlewares/compressionHandler";
1313
describe("node - MiddlewareFactory", () => {
1414
it("Should return the default pipeline", () => {
1515
const defaultMiddleWareArray = MiddlewareFactory.getDefaultMiddlewares();
16-
assert.equal(defaultMiddleWareArray.length, 8);
16+
assert.equal(defaultMiddleWareArray.length, 7);
1717

1818
assert.isTrue(defaultMiddleWareArray[0] instanceof RetryHandler);
1919
assert.isTrue(defaultMiddleWareArray[1] instanceof RedirectHandler);
2020
assert.isTrue(defaultMiddleWareArray[2] instanceof ParametersNameDecodingHandler);
2121
assert.isTrue(defaultMiddleWareArray[3] instanceof UserAgentHandler);
22-
assert.isTrue(defaultMiddleWareArray[4] instanceof CompressionHandler);
23-
assert.isTrue(defaultMiddleWareArray[5] instanceof HeadersInspectionHandler);
24-
assert.isTrue(defaultMiddleWareArray[6] instanceof UrlReplaceHandler);
25-
assert.isTrue(defaultMiddleWareArray[7] instanceof CustomFetchHandler);
22+
assert.isTrue(defaultMiddleWareArray[4] instanceof HeadersInspectionHandler);
23+
assert.isTrue(defaultMiddleWareArray[5] instanceof UrlReplaceHandler);
24+
assert.isTrue(defaultMiddleWareArray[6] instanceof CustomFetchHandler);
2625
});
26+
it("Should return the performance pipeline", () => {
27+
const defaultMiddleWareArray = MiddlewareFactory.getPerformanceMiddlewares();
28+
assert.equal(defaultMiddleWareArray.length, 8);
29+
30+
assert.isTrue(defaultMiddleWareArray[0] instanceof RetryHandler);
31+
assert.isTrue(defaultMiddleWareArray[1] instanceof RedirectHandler);
32+
assert.isTrue(defaultMiddleWareArray[2] instanceof ParametersNameDecodingHandler);
33+
assert.isTrue(defaultMiddleWareArray[3] instanceof UserAgentHandler);
34+
assert.isTrue(defaultMiddleWareArray[4] instanceof CompressionHandler);
35+
assert.isTrue(defaultMiddleWareArray[5] instanceof HeadersInspectionHandler);
36+
assert.isTrue(defaultMiddleWareArray[6] instanceof UrlReplaceHandler);
37+
assert.isTrue(defaultMiddleWareArray[7] instanceof CustomFetchHandler);
38+
});
2739
});

packages/http/fetch/test/node/httpClient.ts

+6-8
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,9 @@ describe("node - HTTPClient.ts", () => {
4040
assert.isTrue(next instanceof RedirectHandler);
4141
assert.isTrue(next?.next instanceof ParametersNameDecodingHandler);
4242
assert.isTrue(next?.next?.next instanceof UserAgentHandler);
43-
assert.isTrue(next?.next?.next?.next instanceof CompressionHandler);
44-
assert.isTrue(next?.next?.next?.next?.next instanceof HeadersInspectionHandler);
45-
assert.isTrue(next?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
46-
assert.isTrue(next?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
43+
assert.isTrue(next?.next?.next?.next instanceof HeadersInspectionHandler);
44+
assert.isTrue(next?.next?.next?.next?.next instanceof UrlReplaceHandler);
45+
assert.isTrue(next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
4746
});
4847

4948
it("Should set default middleware array with customFetchHandler if middleware parameter is undefined && customFetch is defined", () => {
@@ -58,10 +57,9 @@ describe("node - HTTPClient.ts", () => {
5857
assert.isTrue(next instanceof RedirectHandler);
5958
assert.isTrue(next?.next instanceof ParametersNameDecodingHandler);
6059
assert.isTrue(next?.next?.next instanceof UserAgentHandler);
61-
assert.isTrue(next?.next?.next?.next instanceof CompressionHandler);
62-
assert.isTrue(next?.next?.next?.next?.next instanceof HeadersInspectionHandler);
63-
assert.isTrue(next?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
64-
assert.isTrue(next?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
60+
assert.isTrue(next?.next?.next?.next instanceof HeadersInspectionHandler);
61+
assert.isTrue(next?.next?.next?.next?.next instanceof UrlReplaceHandler);
62+
assert.isTrue(next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
6563
});
6664

6765
it("Should set to default fetch handler middleware array if middleware parameter is null && customFetch is undefined", () => {

packages/http/fetch/test/node/kiotaClientFactory.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ describe("browser - KiotaClientFactory", () => {
1919
assert.isTrue(middleware?.next instanceof RedirectHandler);
2020
assert.isTrue(middleware?.next?.next instanceof ParametersNameDecodingHandler);
2121
assert.isTrue(middleware?.next?.next?.next instanceof UserAgentHandler);
22-
assert.isTrue(middleware?.next?.next?.next?.next instanceof CompressionHandler);
23-
assert.isTrue(middleware?.next?.next?.next?.next?.next instanceof HeadersInspectionHandler);
24-
assert.isTrue(middleware?.next?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
25-
assert.isTrue(middleware?.next?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
22+
assert.isTrue(middleware?.next?.next?.next?.next instanceof HeadersInspectionHandler);
23+
assert.isTrue(middleware?.next?.next?.next?.next?.next instanceof UrlReplaceHandler);
24+
assert.isTrue(middleware?.next?.next?.next?.next?.next?.next instanceof CustomFetchHandler);
2625
});
2726

2827
it("Should maintain the middleware array order", () => {

0 commit comments

Comments
 (0)