Skip to content

Commit ea69f82

Browse files
committed
chore: update configurations
1 parent f01c2a8 commit ea69f82

File tree

7 files changed

+84
-34
lines changed

7 files changed

+84
-34
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const base = require("../../jest.config.base.js");
2+
3+
module.exports = {
4+
...base,
5+
testMatch: ["**/*.spec.ts"],
6+
};

packages/middleware-compression/src/compressionMiddleware.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from "@smithy/types";
1111

1212
import { compress, compressStream } from "./compress";
13-
import { CompressionResolvedConfig } from "./configuration";
13+
import { CompressionResolvedConfig } from "./configurations";
1414
import { CLIENT_SUPPORTED_ALGORITHMS as supportedAlgorithms } from "./types";
1515
import { isStreaming } from "./utils";
1616

packages/middleware-compression/src/configuration.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @public
3+
*/
4+
export interface CompressionInputConfig {
5+
/**
6+
* Whether to disable request compression.
7+
*/
8+
disableRequestCompression: boolean;
9+
10+
/**
11+
* The minimum size in bytes that a request body should be to trigger compression.
12+
* The value must be a non-negative integer value between 0 and 10485760 bytes inclusive.
13+
*/
14+
requestMinCompressionSizeBytes: number;
15+
}
16+
17+
/**
18+
* @internal
19+
*/
20+
export interface CompressionResolvedConfig extends CompressionInputConfig {}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
export * from "./compressionMiddleware";
2+
export * from "./configurations";
3+
export * from "./resolveCompressionConfig";
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { resolveCompressionConfig } from "./resolveCompressionConfig";
2+
3+
describe(resolveCompressionConfig.name, () => {
4+
it("should throw an error if requestMinCompressionSizeBytes is less than 0", () => {
5+
const requestMinCompressionSizeBytes = -1;
6+
expect(() => {
7+
resolveCompressionConfig({ disableRequestCompression: false, requestMinCompressionSizeBytes });
8+
}).toThrow(
9+
new RangeError(
10+
"The value for requestMinCompressionSizeBytes must be between 0 and 10485760 inclusive. " +
11+
`The provided value ${requestMinCompressionSizeBytes} is outside this range."`
12+
)
13+
);
14+
});
15+
16+
it("should throw an error if requestMinCompressionSizeBytes is greater than 10485760", () => {
17+
const requestMinCompressionSizeBytes = 10485761;
18+
expect(() => {
19+
resolveCompressionConfig({ disableRequestCompression: false, requestMinCompressionSizeBytes });
20+
}).toThrow(
21+
new RangeError(
22+
"The value for requestMinCompressionSizeBytes must be between 0 and 10485760 inclusive. " +
23+
`The provided value ${requestMinCompressionSizeBytes} is outside this range."`
24+
)
25+
);
26+
});
27+
28+
it.each([0, 10240, 10485760])("returns requestMinCompressionSizeBytes value %s", (requestMinCompressionSizeBytes) => {
29+
const inputConfig = { disableRequestCompression: false, requestMinCompressionSizeBytes };
30+
const resolvedConfig = resolveCompressionConfig(inputConfig);
31+
expect(inputConfig).toEqual(resolvedConfig);
32+
});
33+
34+
it.each([false, true])("returns disableRequestCompression value %s", (disableRequestCompression) => {
35+
const inputConfig = { disableRequestCompression, requestMinCompressionSizeBytes: 0 };
36+
const resolvedConfig = resolveCompressionConfig(inputConfig);
37+
expect(inputConfig).toEqual(resolvedConfig);
38+
});
39+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { CompressionInputConfig, CompressionResolvedConfig } from "./configurations";
2+
3+
export const resolveCompressionConfig = <T>(input: T & CompressionInputConfig): T & CompressionResolvedConfig => {
4+
const { requestMinCompressionSizeBytes } = input;
5+
6+
// The requestMinCompressionSizeBytes should be less than the upper limit for API Gateway
7+
// https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-openapi-minimum-compression-size.html
8+
if (requestMinCompressionSizeBytes < 0 || requestMinCompressionSizeBytes > 10485760) {
9+
throw new RangeError(
10+
"The value for requestMinCompressionSizeBytes must be between 0 and 10485760 inclusive. " +
11+
`The provided value ${requestMinCompressionSizeBytes} is outside this range."`
12+
);
13+
}
14+
15+
return input;
16+
};

0 commit comments

Comments
 (0)