import { EnrichedEntity, Entity } from '../types' import details from '../../res/details.json' import manual from '../../res/manual.json' import exclude from '../../res/exclude.json' const manualEntities = manual as Entity[] const manualKeys = new Set(manualEntities.map(entity => entity.href)) const detailEntities = (details as Entity[]).filter(detail => !manualKeys.has(detail.href)) const joined = [...detailEntities, ...manualEntities] const factories = joined .map((detail: EnrichedEntity) => { detail.usedBy = joined.filter(f => Object.keys(f.recipe?.prerequisites ?? {}).includes(detail.href) ) return detail }) .filter(detail => !(exclude as string[]).includes(detail.href)) const detailsMap = Object.fromEntries( factories.map((detail: EnrichedEntity) => [detail.href, detail]) ) export const useFactories = () => ({ factories, findFactory: (uid: string): EnrichedEntity | undefined => { return detailsMap[uid] } })