{"version":3,"file":"index.cjs","sources":["../../src/serializer/Error.js","../../src/serializer/Serializer.js","../../src/serializer/serializers/SetSerializer.js","../../src/serializer/serializers/MapSerializer.js","../../src/serializer/serializers/FunctionSerializer.js","../../src/serializer/serializers/DateSerializer.js","../../src/serializer/serializers/BigIntSerializer.js","../../src/installer/Installer.js","../../src/index.js"],"sourcesContent":["export class SerializerError extends Error {}\n","import { SerializerError } from './Error'\n\n/** @abstract */\nclass Serializer {\n  #serializerType\n\n  /**\n   * This constructor belongs to an abstract class.\n   *\n   * @param {string} serializerType The type of the serializer.\n   */\n  constructor(serializerType) {\n    if (this.constructor === Serializer) {\n      throw new SerializerError('This is an abstract class')\n    }\n    this.#serializerType = serializerType\n  }\n\n  /**\n   * Returns the type of serializer.\n   *\n   * @returns {string} The type of serializer.\n   */\n  getSerializerType() {\n    return this.#serializerType\n  }\n\n  /**\n   * Serializes data.\n   *\n   * @abstract\n   * @param {any} unserializedData The data to serialize.\n   * @returns {object} The serialized data.\n   */\n  serialize(unserializedData) {}\n\n  /**\n   * Unserializes data.\n   *\n   * @abstract\n   * @param {object} serializedData The data to unserialize (generated by\n   *   serialize method).\n   * @returns {any} The unserialized data.\n   */\n  parse(serializedData) {}\n}\n\nexport default Serializer\n","import Serializer from '../Serializer'\n\n/* eslint-disable no-eval */\nclass SetSerializer extends Serializer {\n  #Set\n\n  /** Serializer used to serialize and unserialize Sets. */\n  constructor() {\n    super('Set')\n    try {\n      // Set constructor used by the client.\n      this.#Set = eval(`new Set().constructor`)\n    } catch (err) {\n      // When the environment does not support the Set constructor, it is used a polyfill in the transpiled code.\n      this.#Set = new Set().constructor\n    }\n  }\n\n  serialize(unserializedData) {\n    const serializedData = {\n      value: Array.from(unserializedData),\n    }\n    return serializedData\n  }\n\n  parse(serializedData) {\n    const value = serializedData.value\n    const parsedData = new this.#Set(value)\n    return parsedData\n  }\n}\n\nexport default SetSerializer\n","import Serializer from '../Serializer'\n\n/* eslint-disable no-eval */\nclass MapSerializer extends Serializer {\n  #Map\n\n  /** Serializer used to serialize and unserialize Maps. */\n  constructor() {\n    super('Map')\n    try {\n      // Map constructor used by the client.\n      this.#Map = eval(`new Map().constructor`)\n    } catch (err) {\n      // When the environment does not support the Map constructor, it is used a polyfill in the transpiled code.\n      this.#Map = new Map().constructor\n    }\n  }\n\n  serialize(unserializedData) {\n    const serializedData = {\n      value: Array.from(unserializedData),\n    }\n    return serializedData\n  }\n\n  parse(serializedData) {\n    const value = serializedData.value\n    const parsedData = new this.#Map(value)\n    return parsedData\n  }\n}\n\nexport default MapSerializer\n","import Serializer from '../Serializer'\n\nclass FunctionSerializer extends Serializer {\n  /** Serializer used to serialize and unserialize functions. */\n  constructor() {\n    super('function')\n  }\n\n  serialize(unserializedData) {\n    const serializedData = {\n      value: `(${unserializedData.toString()})`,\n    }\n    return serializedData\n  }\n\n  parse(serializedData) {\n    const value = serializedData.value\n    // eslint-disable-next-line\n    const parsedData = eval(value)\n    return parsedData\n  }\n}\n\nexport default FunctionSerializer\n","import Serializer from '../Serializer'\n\nclass DateSerializer extends Serializer {\n  /** Serializer used to serialize and unserialize Dates. */\n  constructor() {\n    super('Date')\n  }\n\n  serialize(unserializedData) {\n    const serializedData = {\n      value: unserializedData.toJSON(),\n    }\n    return serializedData\n  }\n\n  parse(serializedData) {\n    const value = serializedData.value\n    const parsedData = new Date(value)\n    return parsedData\n  }\n}\n\nexport default DateSerializer\n","import Serializer from '../Serializer'\n\nclass BigIntSerializer extends Serializer {\n  /** Serializer used to serialize and unserialize BigInts. */\n  constructor() {\n    super('bigint')\n  }\n\n  serialize(unserializedData) {\n    const serializedData = {\n      value: unserializedData.toString(),\n    }\n    return serializedData\n  }\n\n  parse(serializedData) {\n    const value = serializedData.value\n    const parsedData = BigInt(value)\n    return parsedData\n  }\n}\n\nexport default BigIntSerializer\n","import Serializer from '../serializer/Serializer'\n\nexport class Installer {\n  #serializers\n\n  /**\n   * Serializer Installer.\n   *\n   * @param {Serializer[]} serializers The Serializers to install.\n   */\n  constructor(serializers) {\n    this.#serializers = serializers\n  }\n\n  /**\n   * This method is used when it is necessary to install Serializers using some\n   * configuration.\n   *\n   * @param {object} serializerHandler An object that manages the Serializers.\n   * @param {(serializer: {\n   *   getSerializerType: () => string\n   *   serialize: (unserializedData: any) => object\n   *   parse: (serializedData: object) => any\n   * }) => void} serializerHandler.addSerializer\n   *   Method used to add Serializers.\n   * @param {object} installOptions An object that contains the install options.\n   * @param {boolean} [installOptions.includeFunctionSerializer] An Boolean that\n   *   indicates if the FunctionSerializer must be included. Default is false.\n   */\n  install(serializerHandler, installOptions) {\n    const serializers = this.#serializers\n    const options = {\n      includeFunctionSerializer: false,\n      ...installOptions,\n    }\n    const { includeFunctionSerializer } = options\n    for (const key in serializers) {\n      const Serializer = serializers[key]\n      const serializer = new Serializer()\n      const serializerType = serializer.getSerializerType()\n      if (serializerType !== 'function' || includeFunctionSerializer) {\n        serializerHandler.addSerializer(serializer)\n      }\n    }\n  }\n}\n","import * as serializers from './serializer/serializers'\nimport { Installer } from './installer/Installer'\n\nexport { default as BigIntSerializer } from './serializer/serializers/BigIntSerializer'\nexport { default as DateSerializer } from './serializer/serializers/DateSerializer'\nexport { default as FunctionSerializer } from './serializer/serializers/FunctionSerializer'\nexport { default as MapSerializer } from './serializer/serializers/MapSerializer'\nexport { default as SetSerializer } from './serializer/serializers/SetSerializer'\n\nconst baseSerializersInstaller = new Installer(serializers)\n\nexport { baseSerializersInstaller }\n"],"names":["SerializerError","_Error","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","_wrapNativeSuper","Error","_serializerType","_WeakMap","Serializer","constructor","serializerType","_classPrivateFieldInitSpec","writable","value","_classPrivateFieldSet","key","getSerializerType","_classPrivateFieldGet","serialize","unserializedData","parse","serializedData","_Set","SetSerializer","_Serializer","_super2","_this","call","_assertThisInitialized","eval","err","_Set2","Array","parsedData","_Map","MapSerializer","_Serializer2","_super3","_this2","_Map2","FunctionSerializer","_Serializer3","_super4","concat","toString","DateSerializer","_Serializer4","_super5","toJSON","Date","BigIntSerializer","_Serializer5","_super6","BigInt","_serializers","Installer","serializers","install","serializerHandler","installOptions","options","_objectSpread","includeFunctionSerializer","serializer","addSerializer","baseSerializersInstaller"],"mappings":"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"}