@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
text/typescript
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;