Skip to content

Commit 7163f9d

Browse files
authored
chore(eventstream-handler-node): eventstream code maintenance (#7708)
1 parent 66d159c commit 7163f9d

29 files changed

Lines changed: 599 additions & 298 deletions

.eslintrc.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,26 @@ module.exports = {
2828
/** Errors */
2929
"simple-import-sort/imports": "error",
3030
"sort-export-all/sort-export-all": "error",
31+
"@typescript-eslint/consistent-type-imports": "error",
3132
},
3233
ignorePatterns: [
3334
"packages/nested-clients/src/submodules/**/protocols/*.ts",
3435
"packages/nested-clients/src/submodules/**/models/*.ts",
3536
],
3637
overrides: [
3738
{
38-
files: ["lib/*/src/**/*.ts", "clients/*/src/**/*.ts", "packages/*/src/**/*.ts", "private/*/src/**/*.ts"],
39+
files: [
40+
"lib/*/src/**/*.ts",
41+
"clients/*/src/**/*.ts",
42+
"packages/*/src/**/*.ts",
43+
"packages-internal/*/src/**/*.ts",
44+
"private/*/src/**/*.ts",
45+
],
3946
excludedFiles: [
4047
"lib/*/src/**/*.spec.ts",
4148
"clients/*/src/**/*.spec.ts",
4249
"packages/*/src/**/*.spec.ts",
50+
"packages-internal/*/src/**/*.spec.ts",
4351
"private/*/src/**/*.spec.ts",
4452
],
4553
rules: {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
}
141141
},
142142
"lint-staged": {
143-
"{lib,packages}/**/src/**/*.ts": [
143+
"{lib,packages,packages-internal}/**/src/**/*.ts": [
144144
"eslint --fix",
145145
"prettier --write"
146146
],

packages-internal/eventstream-handler-node/src/EventSigningStream.spec.ts renamed to packages-internal/eventstream-handler-node/src/EventSigningTransformStream.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { EventStreamCodec } from "@smithy/eventstream-codec";
2-
import { Message, MessageHeaders, SignedMessage } from "@smithy/types";
2+
import type { Message, MessageHeaders, SignedMessage } from "@smithy/types";
33
import { fromUtf8, toUtf8 } from "@smithy/util-utf8";
44
import { afterEach, describe, expect, test as it, vi } from "vitest";
55

6-
import { EventSigningStream } from "./EventSigningStream";
6+
import { EventSigningTransformStream } from "./EventSigningTransformStream";
77

88
describe("EventSigningStream", () => {
99
const originalDate = Date;
@@ -53,7 +53,7 @@ describe("EventSigningStream", () => {
5353
MockDate.now = () => MockDate().getTime();
5454
global.Date = MockDate as any;
5555

56-
const signingStream = new EventSigningStream({
56+
const signingStream = new EventSigningTransformStream({
5757
priorSignature: "initial",
5858
messageSigner: {
5959
sign: mockMessageSigner,

packages-internal/eventstream-handler-node/src/EventSigningStream.ts renamed to packages-internal/eventstream-handler-node/src/EventSigningTransformStream.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { EventStreamCodec } from "@smithy/eventstream-codec";
2-
import { MessageHeaders, MessageSigner, Provider } from "@smithy/types";
3-
import { Transform, TransformCallback, TransformOptions } from "stream";
1+
import type { EventStreamCodec } from "@smithy/eventstream-codec";
2+
import type { MessageHeaders, MessageSigner, Provider } from "@smithy/types";
3+
import { type TransformCallback, type TransformOptions, Transform } from "node:stream";
44

55
/**
66
* @internal
@@ -13,11 +13,10 @@ export interface EventSigningStreamOptions extends TransformOptions {
1313
}
1414

1515
/**
16+
* A transform stream that signs the eventstream.
1617
* @internal
17-
*
18-
* A transform stream that signs the eventstream
1918
*/
20-
export class EventSigningStream extends Transform {
19+
export class EventSigningTransformStream extends Transform {
2120
private priorSignature: string;
2221
private messageSigner: MessageSigner;
2322
private eventStreamCodec: EventStreamCodec;

packages-internal/eventstream-handler-node/src/EventStreamPayloadHandler.spec.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import { EventStreamCodec } from "@smithy/eventstream-codec";
2-
import { Decoder, Encoder, FinalizeHandler, FinalizeHandlerArguments, HttpRequest, MessageSigner } from "@smithy/types";
3-
import { PassThrough, Readable } from "stream";
2+
import type {
3+
Decoder,
4+
Encoder,
5+
FinalizeHandler,
6+
FinalizeHandlerArguments,
7+
HttpRequest,
8+
MessageSigner,
9+
} from "@smithy/types";
10+
import { type Readable, PassThrough } from "node:stream";
411
import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
512

6-
import { EventSigningStream } from "./EventSigningStream";
13+
import { EventSigningTransformStream } from "./EventSigningTransformStream";
714
import { EventStreamPayloadHandler } from "./EventStreamPayloadHandler";
815

9-
vi.mock("./EventSigningStream");
16+
vi.mock("./EventSigningTransformStream");
1017
vi.mock("@smithy/eventstream-codec");
1118

1219
describe(EventStreamPayloadHandler.name, () => {
@@ -28,7 +35,7 @@ describe(EventStreamPayloadHandler.name, () => {
2835
const mockNextHandler: FinalizeHandler<any, any> = vi.fn();
2936

3037
beforeEach(() => {
31-
(EventSigningStream as unknown as any).mockImplementation(function () {
38+
(EventSigningTransformStream as unknown as any).mockImplementation(function () {
3239
return new PassThrough();
3340
});
3441
vi.mocked(EventStreamCodec).mockImplementation(function () {} as any);
@@ -97,8 +104,8 @@ describe(EventStreamPayloadHandler.name, () => {
97104
input: {},
98105
});
99106

100-
expect(EventSigningStream).toHaveBeenCalledTimes(1);
101-
expect(EventSigningStream).toHaveBeenCalledWith({
107+
expect(EventSigningTransformStream).toHaveBeenCalledTimes(1);
108+
expect(EventSigningTransformStream).toHaveBeenCalledWith({
102109
priorSignature,
103110
eventStreamCodec: expect.anything(),
104111
messageSigner: expect.anything(),
@@ -129,8 +136,8 @@ describe(EventStreamPayloadHandler.name, () => {
129136
input: {},
130137
});
131138

132-
expect(EventSigningStream).toHaveBeenCalledTimes(1);
133-
expect(EventSigningStream).toHaveBeenCalledWith({
139+
expect(EventSigningTransformStream).toHaveBeenCalledTimes(1);
140+
expect(EventSigningTransformStream).toHaveBeenCalledWith({
134141
priorSignature,
135142
eventStreamCodec: expect.anything(),
136143
messageSigner: expect.anything(),
@@ -224,7 +231,7 @@ describe(EventStreamPayloadHandler.name, () => {
224231

225232
const pipelineError = new Error("ERR_STREAM_PREMATURE_CLOSE");
226233

227-
(EventSigningStream as unknown as any).mockImplementationOnce(function () {
234+
(EventSigningTransformStream as unknown as any).mockImplementationOnce(function () {
228235
const stream = new PassThrough();
229236
// destroy stream after a short delay to simulate premature close
230237
setTimeout(() => stream.destroy(pipelineError), 10);

packages-internal/eventstream-handler-node/src/EventStreamPayloadHandler.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { EventStreamCodec } from "@smithy/eventstream-codec";
2-
import {
2+
import type {
33
Decoder,
44
Encoder,
55
EventStreamPayloadHandler as IEventStreamPayloadHandler,
@@ -12,9 +12,9 @@ import {
1212
MetadataBearer,
1313
Provider,
1414
} from "@smithy/types";
15-
import { PassThrough, pipeline, Readable } from "stream";
15+
import { PassThrough, pipeline, Readable } from "node:stream";
1616

17-
import { EventSigningStream } from "./EventSigningStream";
17+
import { EventSigningTransformStream } from "./EventSigningTransformStream";
1818

1919
/**
2020
* @internal
@@ -28,12 +28,6 @@ export interface EventStreamPayloadHandlerOptions {
2828

2929
/**
3030
* @internal
31-
*
32-
* A handler that control the eventstream payload flow:
33-
* 1. Pause stream for initial attempt.
34-
* 2. Close the stream is attempt fails.
35-
* 3. Start piping payload when connection is established.
36-
* 4. Sign the payload after payload stream starting to flow.
3731
*/
3832
export class EventStreamPayloadHandler implements IEventStreamPayloadHandler {
3933
private readonly messageSigner: Provider<MessageSigner>;
@@ -67,7 +61,7 @@ export class EventStreamPayloadHandler implements IEventStreamPayloadHandler {
6761
const match = request.headers?.authorization?.match(/Signature=([\w]+)$/);
6862
// Sign the eventstream based on the signature from initial request.
6963
const priorSignature = match?.[1] ?? (query?.["X-Amz-Signature"] as string) ?? "";
70-
const signingStream = new EventSigningStream({
64+
const signingStream = new EventSigningTransformStream({
7165
priorSignature,
7266
eventStreamCodec: this.eventStreamCodec,
7367
messageSigner: await this.messageSigner(),

packages-internal/middleware-websocket/src/eventstream-payload-handler-provider.ts renamed to packages-internal/eventstream-handler-node/src/eventStreamPayloadHandlerProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Decoder, Encoder, EventStreamPayloadHandlerProvider, MessageSigner, Provider } from "@smithy/types";
1+
import type { Decoder, Encoder, EventStreamPayloadHandlerProvider, MessageSigner, Provider } from "@smithy/types";
22

33
import { EventStreamPayloadHandler } from "./EventStreamPayloadHandler";
44

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
/**
22
* @internal
33
*/
4-
export { eventStreamPayloadHandlerProvider } from "./provider";
4+
export { eventStreamPayloadHandlerProvider } from "./eventStreamPayloadHandlerProvider";

packages-internal/middleware-websocket/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232
"@smithy/protocol-http": "^5.3.8",
3333
"@smithy/signature-v4": "^5.3.8",
3434
"@smithy/types": "^4.12.0",
35+
"@smithy/util-base64": "^4.3.0",
3536
"@smithy/util-hex-encoding": "^4.2.0",
37+
"@smithy/util-utf8": "^4.2.0",
3638
"tslib": "^2.6.2"
3739
},
3840
"devDependencies": {

packages-internal/middleware-websocket/src/websocket-fetch-handler.spec.ts renamed to packages-internal/middleware-websocket/src/WebSocketFetchHandler.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { FetchHttpHandler } from "@smithy/fetch-http-handler";
22
import { HttpRequest } from "@smithy/protocol-http";
33
import { WebSocket } from "mock-socket";
4-
import { PassThrough } from "stream";
4+
import { PassThrough } from "node:stream";
55
import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
66
import WS from "vitest-websocket-mock";
77

8-
import { WebSocketFetchHandler } from "./websocket-fetch-handler";
8+
import { WebSocketFetchHandler } from "./WebSocketFetchHandler";
99

1010
vi.mock("@smithy/fetch-http-handler");
1111

0 commit comments

Comments
 (0)