20 lines
808 B
JavaScript
20 lines
808 B
JavaScript
import { EventStreamMarshaller as UniversalEventStreamMarshaller } from "@smithy/eventstream-serde-universal";
|
|
import { Readable } from "stream";
|
|
import { readabletoIterable } from "./utils";
|
|
export class EventStreamMarshaller {
|
|
universalMarshaller;
|
|
constructor({ utf8Encoder, utf8Decoder }) {
|
|
this.universalMarshaller = new UniversalEventStreamMarshaller({
|
|
utf8Decoder,
|
|
utf8Encoder,
|
|
});
|
|
}
|
|
deserialize(body, deserializer) {
|
|
const bodyIterable = typeof body[Symbol.asyncIterator] === "function" ? body : readabletoIterable(body);
|
|
return this.universalMarshaller.deserialize(bodyIterable, deserializer);
|
|
}
|
|
serialize(input, serializer) {
|
|
return Readable.from(this.universalMarshaller.serialize(input, serializer));
|
|
}
|
|
}
|