diff --git a/lib/umfmessage.js b/lib/umfmessage.js index eec6f0f..fd75f88 100644 --- a/lib/umfmessage.js +++ b/lib/umfmessage.js @@ -4,6 +4,11 @@ const uuid = require('uuid'); const crypto = require('crypto'); const UMF_VERSION = 'UMF/1.4.6'; +const isNotEmptyString = (string, checkContents = true) => string != null && (!checkContents || string.trim() != ''); + +// Works like the es2020 ?? operator +const nCoalescg = (...args) => args.find((el) => el != null && el != undefined); + /** * @name UMFMessage * @summary UMF Message helper @@ -76,46 +81,46 @@ class UMFMessage { */ toShort() { let message = {}; - if (this.message['to']) { + if (isNotEmptyString(this.message['to'])) { message['to'] = this.message['to']; } - if (this.message['from']) { + if (isNotEmptyString(this.message['from'])) { message['frm'] = this.message['from']; } - if (this.message['headers']) { + if (this.message['headers'] != null) { message['hdr'] = this.message['headers']; } - if (this.message['mid']) { + if (isNotEmptyString(this.message['mid'])) { message['mid'] = this.message['mid']; } - if (this.message['rmid']) { + if (isNotEmptyString(this.message['rmid'])) { message['rmid'] = this.message['rmid']; } - if (this.message['signature']) { + if (isNotEmptyString(this.message['signature'])) { message['sig'] = this.message['signature']; } - if (this.message['timeout']) { + if (isNotEmptyString(this.message['timeout'])) { message['tmo'] = this.message['timeout']; } - if (this.message['timestamp']) { + if (isNotEmptyString(this.message['timestamp'])) { message['ts'] = this.message['timestamp']; } - if (this.message['type']) { + if (isNotEmptyString(this.message['type'])) { message['typ'] = this.message['type']; } - if (this.message['version']) { + if (isNotEmptyString(this.message['version'])) { message['ver'] = this.message['version']; } - if (this.message['via']) { + if (isNotEmptyString(this.message['via'])) { message['via'] = this.message['via']; } - if (this.message['forward']) { + if (isNotEmptyString(this.message['forward'])) { message['fwd'] = this.message['forward']; } - if (this.message['body']) { + if (this.message['body'] != null) { message['bdy'] = this.message['body']; } - if (this.message['authorization']) { + if (isNotEmptyString(this.message['authorization'])) { message['aut'] = this.message['authorization']; } return message; @@ -127,11 +132,7 @@ class UMFMessage { * @return {boolean} response - returns true is valid otherwise false */ validate() { - if (!this.message.from || !this.message.to || !this.message.body) { - return false; - } else { - return true; - } + return isNotEmptyString(this.message.from) && isNotEmptyString(this.message.to) && this.message.body != null; } } @@ -152,41 +153,41 @@ function createMessageInstance(message) { return true; } }); - if (message.to) { + if (isNotEmptyString(message.to)) { proxy.to = message.to; } - if (message.from || message.frm) { - proxy.from = message.from || message.frm; + if (isNotEmptyString(nCoalescg(message.from, message.frm))) { + proxy.from = nCoalescg(message.from, message.frm); } - if (message.headers || message.hdr) { - proxy.headers = message.headers || message.hdr; + if (nCoalescg(message.headers, message.hdr) != null) { + proxy.headers = nCoalescg(message.headers, message.hdr); } - proxy.mid = message.mid || proxy.createMessageID(); - if (message.rmid) { + proxy.mid = nCoalescg(message.mid, proxy.createMessageID()); + if (isNotEmptyString(message.rmid)) { proxy.rmid = message.rmid; } - if (message.signature || message.sig) { - proxy.signature = message.signature || message.sig; + if (isNotEmptyString(nCoalescg(message.signature, message.sig))) { + proxy.signature = nCoalescg(message.signature, message.sig); } - if (message.timeout || message.tmo) { - proxy.timeout = message.timeout || message.tmo; + if (isNotEmptyString(nCoalescg(message.timeout, message.tmo))) { + proxy.timeout = nCoalescg(message.timeout, message.tmo); } - proxy.timestamp = message.timestamp || message.ts || proxy.getTimeStamp(); - if (message.type || message.typ) { - proxy.type = message.type || message.typ; + proxy.timestamp = nCoalescg(message.timestamp, message.ts, proxy.getTimeStamp()); + if (isNotEmptyString(nCoalescg(message.type, message.typ))) { + proxy.type = nCoalescg(message.type, message.typ); } - proxy.version = message.version || message.ver || UMF_VERSION; - if (message.via) { + proxy.version = nCoalescg(message.version, message.ver, UMF_VERSION); + if (isNotEmptyString(message.via)) { proxy.via = message.via; } - if (message.forward || message.fwd) { - proxy.forward = message.forward || message.fwd; + if (isNotEmptyString(nCoalescg(message.forward, message.fwd))) { + proxy.forward = nCoalescg(message.forward, message.fwd); } - if (message.body || message.bdy) { - proxy.body = message.body || message.bdy; + if (nCoalescg(message.body, message.bdy) != null) { + proxy.body = nCoalescg(message.body, message.bdy); } - if (message.authorization || message.aut) { - proxy.authorization = message.authorization || message.aut; + if (isNotEmptyString(nCoalescg(message.authorization, message.aut))) { + proxy.authorization = nCoalescg(message.authorization, message.aut); } return proxy; }