UNPKG

@nestjs/microservices

Version:

Nest - modern, fast, powerful node.js web framework (@microservices)

39 lines (38 loc) • 982 B
/** * The only keys a Nest packet can carry. `status` is set by the * "no handler" packet emitted by RabbitMQ. */ const ENVELOPE_KEYS = new Set([ 'id', 'err', 'response', 'isDisposed', 'status', ]); /** * @publicApi */ export class IncomingResponseDeserializer { deserialize(value, options) { return this.isExternal(value) ? this.mapToSchema(value) : value; } isExternal(value) { if (!value || typeof value !== 'object') { return true; } const keys = Object.keys(value); if (keys.length === 0) { return true; } // Nest packets never carry extra keys, unlike a foreign payload that // happens to contain `response` / `err` / `isDisposed`. return keys.some(key => !ENVELOPE_KEYS.has(key)); } mapToSchema(value) { return { id: value && value.id, response: value, isDisposed: true, }; } }