UNPKG

@spiffcommerce/core

Version:

Core client API for interacting with the Spiff Commerce backend.

1 lines • 16.7 kB
{"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]}