31 lines
967 B
TypeScript
31 lines
967 B
TypeScript
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]
|
|
}
|
|
})
|