const fs = require("fs"); const path = require("path"); const R = require("ramda"); const { DOMAINS_PATH } = require("./constants"); const toDomain = (str) => path.join(DOMAINS_PATH, str); const parseDomain = (name) => (str) => { try { return JSON.parse(str); } catch (e) { throw new Error(`Error: Could not parse ${name} => ${str}`); } }; const toDomainData = (name) => R.compose(parseDomain(name), R.toString, fs.readFileSync, toDomain)(name); const getDomains = () => fs.promises.readdir(DOMAINS_PATH, {}).then( R.map((name) => ({ ...toDomainData(name), name: name.replace(/\.json$/, ""), })), ); module.exports = { getDomains };