UNPKG

@softchef/cdk-iot-device-management

Version:

IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.

43 lines (42 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getUnmarshalledStream = void 0; function getUnmarshalledStream(source, options) { return { [Symbol.asyncIterator]: async function* () { for await (const chunk of source) { const message = options.eventMarshaller.unmarshall(chunk); const { value: messageType } = message.headers[":message-type"]; if (messageType === "error") { const unmodeledError = new Error(message.headers[":error-message"].value || "UnknownError"); unmodeledError.name = message.headers[":error-code"].value; throw unmodeledError; } else if (messageType === "exception") { const code = message.headers[":exception-type"].value; const exception = { [code]: message }; const deserializedException = await options.deserializer(exception); if (deserializedException.$unknown) { const error = new Error(options.toUtf8(message.body)); error.name = code; throw error; } throw deserializedException[code]; } else if (messageType === "event") { const event = { [message.headers[":event-type"].value]: message, }; const deserialized = await options.deserializer(event); if (deserialized.$unknown) continue; yield deserialized; } else { throw Error(`Unrecognizable event type: ${message.headers[":event-type"].value}`); } } }, }; } exports.getUnmarshalledStream = getUnmarshalledStream;