Home Reference Source Test

src/message.js

/**
 * message.js
 */

import jseu from 'js-encoding-utils';
import cloneDeep from 'lodash.clonedeep'; //'lodash/cloneDeep';

/**
 * import message and translate it to message object.
 * @param msg
 * @return {Message}
 */
export const importMessage = (msg) => {
  const localMessage = cloneDeep(msg);
  const obj = new Message();
  obj._init(localMessage);
  return obj;
};

class Message {
  _init(msg){
    if(msg instanceof Uint8Array){
      this._message = msg;
      this._messageType = 'binary';
    }
    else if (typeof msg === 'string'){
      this._message = jseu.encoder.stringToArrayBuffer(msg);
      this._messageType = 'string';
    }
    else throw new Error('UnsupportedMessageType');
  }

  get binary () { // returns message in binary format
    return this._message;
  }

  get message () { // return message in original format
    if(this.messageType === 'binary') return this._message;
    else if (this.messageType === 'string') return jseu.encoder.arrayBufferToString(this._message);
    else return null;
  }
  get messageType () { return this._messageType; }
}