@nestjs/microservices
Version:
Nest - modern, fast, powerful node.js web framework (@microservices)
37 lines (36 loc) • 1.16 kB
JavaScript
import { isNil, isObject, isPlainObject, isString, isUndefined, } from '@nestjs/common/internal';
/**
* @publicApi
*/
export class KafkaRequestSerializer {
serialize(value) {
const isNotKafkaMessage = isNil(value) ||
!isObject(value) ||
(!('key' in value) && !('value' in value));
if (isNotKafkaMessage) {
value = { value };
}
value.value = this.encode(value.value);
if (!isNil(value.key)) {
value.key = this.encode(value.key);
}
if (isNil(value.headers)) {
value.headers = {};
}
return value;
}
encode(value) {
const isObjectOrArray = !isNil(value) && !isString(value) && !Buffer.isBuffer(value);
if (isObjectOrArray) {
return isPlainObject(value) ||
Array.isArray(value) ||
value.toString == Object.prototype.toString // Prevent default [object Object] behavior
? JSON.stringify(value)
: value.toString();
}
else if (isUndefined(value)) {
return null;
}
return value;
}
}