let traitId = 0; const idToTraitMap = new Map(); const traitToIdMap = new Map(); const traitRegistry = new Map(); export function registerTrait(Trait) { const hadTrait = traitRegistry.has(Trait.type()); traitRegistry.set(Trait.type(), Trait); if (!hadTrait) { traitToIdMap.set(Trait.type(), traitId); idToTraitMap.set(traitId, Trait.type()); traitId += 1; } } export function hasTrait(type) { return traitRegistry.has(type); } export function idFromTrait(Trait) { return traitToIdMap.get(Trait.type()); } export function lookupTrait(type) { return traitRegistry.get(type); } export function traitFromId(id) { return lookupTrait(idToTraitMap.get(id)); }