/** * @typedef {import("../entity/IEntity").default} IEntity * @typedef {import("../entity/IEntity").AnyValue} AnyValue */ /** * @template {AnyValue} T * @typedef {import("../entity/IEntity").AnyValueConstructor} AnyValueConstructor */ /** * @template {AnyValue} T * @typedef {import("./ISerializer").default} ISerializer */ export default class SerializerFactory { /** @type {Map, ISerializer>} */ static #serializers = new Map() /** * @template {AnyValue} T * @param {AnyValueConstructor} entity * @param {ISerializer} object */ static registerSerializer(entity, object) { SerializerFactory.#serializers.set(entity, object) } /** * @template {AnyValue} T * @param {new () => T} entity * @returns {ISerializer} */ static getSerializer(entity) { // @ts-expect-error return SerializerFactory.#serializers.get(entity) } }