@schukai/monster
Version:
Monster is a simple library for creating fast, robust and lightweight websites.
66 lines (58 loc) • 1.6 kB
JavaScript
/**
* Copyright © Volker Schukai and all contributing authors, {{copyRightYear}}. All rights reserved.
* Node module: @schukai/monster
*
* This source code is licensed under the GNU Affero General Public License version 3 (AGPLv3).
* The full text of the license can be found at: https://www.gnu.org/licenses/agpl-3.0.en.html
*
* For those who do not wish to adhere to the AGPLv3, a commercial license is available.
* Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
* For more information about purchasing a commercial license, please contact Volker Schukai.
*
* SPDX-License-Identifier: AGPL-3.0
*/
import { Base } from "../../types/base.mjs";
import { validateObject, validateString } from "../../types/validate.mjs";
export { Message };
const dataSymbol = Symbol("@@data");
/**
* This class represents a WebSocket message.
*
* @license AGPLv3
* @since 3.4.0
* @copyright Volker Schukai
* @summary The Message class encapsulates a WebSocket message.
*/
class Message extends Base {
/**
* @param {Object} data
* @throws {TypeError} value is not a object
*/
constructor(data) {
super();
this[dataSymbol] = validateObject(data);
}
/**
* Returns the raw message.
*
* @return {object}
*/
getData() {
return this[dataSymbol];
}
/**
* @return {*}
*/
toJSON() {
return this[dataSymbol];
}
/**
* @param {string} json
* @return {Message}
* @throws {TypeError} value is not a string
*/
static fromJSON(json) {
validateString(json);
return new Message(JSON.parse(json));
}
}