UNPKG

@civ-clone/core-data-object

Version:

A data exchange object for converting a subset of a class instances to plain JSON.

37 lines (31 loc) 1 kB
import { EntityRegistry, IEntityRegistry, } from '@civ-clone/core-registry/EntityRegistry'; import AdditionalData from './AdditionalData'; import { IConstructor } from '@civ-clone/core-registry/Registry'; export interface IAdditionalDataRegistry extends IEntityRegistry<AdditionalData> { getByType(type: IConstructor): AdditionalData[]; } export class AdditionalDataRegistry extends EntityRegistry<AdditionalData> implements IAdditionalDataRegistry { constructor() { super(AdditionalData); } getByType(type: IConstructor): AdditionalData[] { return this.filter( (additionalData: AdditionalData): boolean => additionalData.type() === type || Object.prototype.isPrototypeOf.call(additionalData.type(), type) || Object.prototype.isPrototypeOf.call( additionalData.type().prototype, type ) ); } } export const instance: AdditionalDataRegistry = new AdditionalDataRegistry(); export default AdditionalDataRegistry;