/** * @author [Tristan Valcke]{@link https://github.com/Itee} */ import { isEmptyString, isNotString } from 'itee-validators' import { v4 as uuidv4 } from 'uuid' /** * @typedef {Object} WebAPIMessageSerialized * @property {string} id * @property {string} type */ /** * @class * @classdesc The base class for all web api message */ class WebAPIMessage { /** * @static * @type {boolean} */ static isWebAPIMessage = true /** * * @param {string} type */ constructor ( type ) { this._id = uuidv4() this.type = type } /** * */ get id () { return this._id } /** * * @returns {string} */ get type () { return this._type } set type ( value ) { if ( isNotString( value ) ) { throw new ReferenceError( 'WebAPIMessage type cannot be null or undefined !' )} if ( isEmptyString( value ) ) { throw new TypeError( 'WebAPIMessage type cannot be an empty string !' )} this._type = value } /** * * @returns {{id: String, type: String}} */ toJSON () { return { id: this.id, type: this.type } } } export { WebAPIMessage }