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