diff --git a/packages/eventstream-serde-config-resolver/jest.config.js b/packages/eventstream-serde-config-resolver/jest.config.js new file mode 100644 index 000000000000..a8d1c2e49912 --- /dev/null +++ b/packages/eventstream-serde-config-resolver/jest.config.js @@ -0,0 +1,5 @@ +const base = require("../../jest.config.base.js"); + +module.exports = { + ...base, +}; diff --git a/packages/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.spec.ts b/packages/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.spec.ts new file mode 100644 index 000000000000..c89eb402b5ac --- /dev/null +++ b/packages/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.spec.ts @@ -0,0 +1,19 @@ +import { resolveEventStreamSerdeConfig } from "./EventStreamSerdeConfig"; + +describe("resolveEventStreamSerdeConfig", () => { + const eventStreamSerdeProvider = jest.fn(); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it("sets value returned by eventStreamSerdeProvider", () => { + const mockReturn = "mockReturn"; + eventStreamSerdeProvider.mockReturnValueOnce(mockReturn); + + const input = { eventStreamSerdeProvider }; + expect(resolveEventStreamSerdeConfig(input).eventStreamMarshaller).toStrictEqual(mockReturn); + expect(eventStreamSerdeProvider).toHaveBeenCalledTimes(1); + expect(eventStreamSerdeProvider).toHaveBeenCalledWith(input); + }); +}); diff --git a/packages/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.ts b/packages/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.ts new file mode 100644 index 000000000000..0af8474173e8 --- /dev/null +++ b/packages/eventstream-serde-config-resolver/src/EventStreamSerdeConfig.ts @@ -0,0 +1,18 @@ +import { EventStreamMarshaller, EventStreamSerdeProvider } from "@aws-sdk/types"; + +export interface EventStreamSerdeInputConfig {} + +export interface EventStreamSerdeResolvedConfig { + eventStreamMarshaller: EventStreamMarshaller; +} + +interface PreviouslyResolved { + eventStreamSerdeProvider: EventStreamSerdeProvider; +} + +export const resolveEventStreamSerdeConfig = ( + input: T & PreviouslyResolved & EventStreamSerdeInputConfig +): T & EventStreamSerdeResolvedConfig => ({ + ...input, + eventStreamMarshaller: input.eventStreamSerdeProvider(input), +}); diff --git a/packages/eventstream-serde-config-resolver/src/index.ts b/packages/eventstream-serde-config-resolver/src/index.ts index f479b391e92e..515a9c61d848 100644 --- a/packages/eventstream-serde-config-resolver/src/index.ts +++ b/packages/eventstream-serde-config-resolver/src/index.ts @@ -1,21 +1 @@ -import { Decoder, Encoder, EventStreamMarshaller, EventStreamSerdeProvider } from "@aws-sdk/types"; -export interface EventStreamSerdeInputConfig {} - -export interface EventStreamSerdeResolvedConfig { - eventStreamMarshaller: EventStreamMarshaller; -} - -interface PreviouslyResolved { - utf8Encoder: Encoder; - utf8Decoder: Decoder; - eventStreamSerdeProvider: EventStreamSerdeProvider; -} - -export function resolveEventStreamSerdeConfig( - input: T & PreviouslyResolved & EventStreamSerdeInputConfig -): T & EventStreamSerdeResolvedConfig { - return { - ...input, - eventStreamMarshaller: input.eventStreamSerdeProvider({ ...input }), - }; -} +export * from "./EventStreamSerdeConfig";