{"version":3,"file":"index-T4a6QkoE.cjs","sources":["../../../node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js"],"sourcesContent":["import { fromUtf8, toUtf8 } from \"@smithy/util-utf8\";\nexport class EventStreamSerde {\n    marshaller;\n    serializer;\n    deserializer;\n    serdeContext;\n    defaultContentType;\n    constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }) {\n        this.marshaller = marshaller;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        this.serdeContext = serdeContext;\n        this.defaultContentType = defaultContentType;\n    }\n    async serializeEventStream({ eventStream, requestSchema, initialRequest, }) {\n        const marshaller = this.marshaller;\n        const eventStreamMember = requestSchema.getEventStreamMember();\n        const unionSchema = requestSchema.getMemberSchema(eventStreamMember);\n        const serializer = this.serializer;\n        const defaultContentType = this.defaultContentType;\n        const initialRequestMarker = Symbol(\"initialRequestMarker\");\n        const eventStreamIterable = {\n            async *[Symbol.asyncIterator]() {\n                if (initialRequest) {\n                    const headers = {\n                        \":event-type\": { type: \"string\", value: \"initial-request\" },\n                        \":message-type\": { type: \"string\", value: \"event\" },\n                        \":content-type\": { type: \"string\", value: defaultContentType },\n                    };\n                    serializer.write(requestSchema, initialRequest);\n                    const body = serializer.flush();\n                    yield {\n                        [initialRequestMarker]: true,\n                        headers,\n                        body,\n                    };\n                }\n                for await (const page of eventStream) {\n                    yield page;\n                }\n            },\n        };\n        return marshaller.serialize(eventStreamIterable, (event) => {\n            if (event[initialRequestMarker]) {\n                return {\n                    headers: event.headers,\n                    body: event.body,\n                };\n            }\n            const unionMember = Object.keys(event).find((key) => {\n                return key !== \"__type\";\n            }) ?? \"\";\n            const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event);\n            const headers = {\n                \":event-type\": { type: \"string\", value: eventType },\n                \":message-type\": { type: \"string\", value: \"event\" },\n                \":content-type\": { type: \"string\", value: explicitPayloadContentType ?? defaultContentType },\n                ...additionalHeaders,\n            };\n            return {\n                headers,\n                body,\n            };\n        });\n    }\n    async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) {\n        const marshaller = this.marshaller;\n        const eventStreamMember = responseSchema.getEventStreamMember();\n        const unionSchema = responseSchema.getMemberSchema(eventStreamMember);\n        const memberSchemas = unionSchema.getMemberSchemas();\n        const initialResponseMarker = Symbol(\"initialResponseMarker\");\n        const asyncIterable = marshaller.deserialize(response.body, async (event) => {\n            const unionMember = Object.keys(event).find((key) => {\n                return key !== \"__type\";\n            }) ?? \"\";\n            const body = event[unionMember].body;\n            if (unionMember === \"initial-response\") {\n                const dataObject = await this.deserializer.read(responseSchema, body);\n                delete dataObject[eventStreamMember];\n                return {\n                    [initialResponseMarker]: true,\n                    ...dataObject,\n                };\n            }\n            else if (unionMember in memberSchemas) {\n                const eventStreamSchema = memberSchemas[unionMember];\n                if (eventStreamSchema.isStructSchema()) {\n                    const out = {};\n                    let hasBindings = false;\n                    for (const [name, member] of eventStreamSchema.structIterator()) {\n                        const { eventHeader, eventPayload } = member.getMergedTraits();\n                        hasBindings = hasBindings || Boolean(eventHeader || eventPayload);\n                        if (eventPayload) {\n                            if (member.isBlobSchema()) {\n                                out[name] = body;\n                            }\n                            else if (member.isStringSchema()) {\n                                out[name] = (this.serdeContext?.utf8Encoder ?? toUtf8)(body);\n                            }\n                            else if (member.isStructSchema()) {\n                                out[name] = await this.deserializer.read(member, body);\n                            }\n                        }\n                        else if (eventHeader) {\n                            const value = event[unionMember].headers[name]?.value;\n                            if (value != null) {\n                                if (member.isNumericSchema()) {\n                                    if (value && typeof value === \"object\" && \"bytes\" in value) {\n                                        out[name] = BigInt(value.toString());\n                                    }\n                                    else {\n                                        out[name] = Number(value);\n                                    }\n                                }\n                                else {\n                                    out[name] = value;\n                                }\n                            }\n                        }\n                    }\n                    if (hasBindings) {\n                        return {\n                            [unionMember]: out,\n                        };\n                    }\n                    if (body.byteLength === 0) {\n                        return {\n                            [unionMember]: {},\n                        };\n                    }\n                }\n                return {\n                    [unionMember]: await this.deserializer.read(eventStreamSchema, body),\n                };\n            }\n            else {\n                return {\n                    $unknown: event,\n                };\n            }\n        });\n        const asyncIterator = asyncIterable[Symbol.asyncIterator]();\n        const firstEvent = await asyncIterator.next();\n        if (firstEvent.done) {\n            return asyncIterable;\n        }\n        if (firstEvent.value?.[initialResponseMarker]) {\n            if (!responseSchema) {\n                throw new Error(\"@smithy::core/protocols - initial-response event encountered in event stream but no response schema given.\");\n            }\n            for (const [key, value] of Object.entries(firstEvent.value)) {\n                initialResponseContainer[key] = value;\n            }\n        }\n        return {\n            async *[Symbol.asyncIterator]() {\n                if (!firstEvent?.value?.[initialResponseMarker]) {\n                    yield firstEvent.value;\n                }\n                while (true) {\n                    const { done, value } = await asyncIterator.next();\n                    if (done) {\n                        break;\n                    }\n                    yield value;\n                }\n            },\n        };\n    }\n    writeEventBody(unionMember, unionSchema, event) {\n        const serializer = this.serializer;\n        let eventType = unionMember;\n        let explicitPayloadMember = null;\n        let explicitPayloadContentType;\n        const isKnownSchema = (() => {\n            const struct = unionSchema.getSchema();\n            return struct[4].includes(unionMember);\n        })();\n        const additionalHeaders = {};\n        if (!isKnownSchema) {\n            const [type, value] = event[unionMember];\n            eventType = type;\n            serializer.write(15, value);\n        }\n        else {\n            const eventSchema = unionSchema.getMemberSchema(unionMember);\n            if (eventSchema.isStructSchema()) {\n                for (const [memberName, memberSchema] of eventSchema.structIterator()) {\n                    const { eventHeader, eventPayload } = memberSchema.getMergedTraits();\n                    if (eventPayload) {\n                        explicitPayloadMember = memberName;\n                    }\n                    else if (eventHeader) {\n                        const value = event[unionMember][memberName];\n                        let type = \"binary\";\n                        if (memberSchema.isNumericSchema()) {\n                            if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) {\n                                type = \"integer\";\n                            }\n                            else {\n                                type = \"long\";\n                            }\n                        }\n                        else if (memberSchema.isTimestampSchema()) {\n                            type = \"timestamp\";\n                        }\n                        else if (memberSchema.isStringSchema()) {\n                            type = \"string\";\n                        }\n                        else if (memberSchema.isBooleanSchema()) {\n                            type = \"boolean\";\n                        }\n                        if (value != null) {\n                            additionalHeaders[memberName] = {\n                                type,\n                                value,\n                            };\n                            delete event[unionMember][memberName];\n                        }\n                    }\n                }\n                if (explicitPayloadMember !== null) {\n                    const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember);\n                    if (payloadSchema.isBlobSchema()) {\n                        explicitPayloadContentType = \"application/octet-stream\";\n                    }\n                    else if (payloadSchema.isStringSchema()) {\n                        explicitPayloadContentType = \"text/plain\";\n                    }\n                    serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]);\n                }\n                else {\n                    serializer.write(eventSchema, event[unionMember]);\n                }\n            }\n            else if (eventSchema.isUnitSchema()) {\n                serializer.write(eventSchema, {});\n            }\n            else {\n                throw new Error(\"@smithy/core/event-streams - non-struct member not supported in event stream union.\");\n            }\n        }\n        const messageSerialization = serializer.flush() ?? new Uint8Array();\n        const body = typeof messageSerialization === \"string\"\n            ? (this.serdeContext?.utf8Decoder ?? fromUtf8)(messageSerialization)\n            : messageSerialization;\n        return {\n            body,\n            eventType,\n            explicitPayloadContentType,\n            additionalHeaders,\n        };\n    }\n}\n"],"names":["EventStreamSerde","marshaller","serializer","deserializer","serdeContext","defaultContentType","eventStream","requestSchema","initialRequest","eventStreamMember","unionSchema","initialRequestMarker","eventStreamIterable","headers","body","page","event","unionMember","key","additionalHeaders","eventType","explicitPayloadContentType","response","responseSchema","initialResponseContainer","memberSchemas","initialResponseMarker","asyncIterable","dataObject","eventStreamSchema","out","hasBindings","name","member","eventHeader","eventPayload","toUtf8","value","asyncIterator","firstEvent","done","explicitPayloadMember","isKnownSchema","eventSchema","memberName","memberSchema","type","payloadSchema","messageSerialization","fromUtf8"],"mappings":"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","x_google_ignoreList":[0]}