UNPKG

@schukai/monster

Version:

Monster is a simple library for creating fast, robust and lightweight websites.

66 lines (58 loc) 1.6 kB
/** * 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)); } }