import { forEach, map } from "lodash"; // import { FetchedData } from "../fetchPublicData"; import getLatestPostsByLocaleFromPostResponse from "../helpers/getLatestPostsByLocaleFromPostResponse"; import getLocales from "../helpers/getLocales"; import { LatestPostData } from "../types"; import createFilenames from "../helpers/createFilenames"; import templatePaths from "../helpers/templatePaths"; import chunksByPage from "../helpers/chunksByPage"; import createCommonConfig from "../helpers/createCommonConfig"; import createPaths from "../helpers/createPaths"; import getPageAndGlobalTranslations from "../helpers/getPageAndGlobalTranslations"; const HtmlWebpackPlugin = require("html-webpack-plugin"); type HomeData = { locale: string; latestPosts: LatestPostData[]; availableLocales: string[]; }; const homes = (responses: FetchedData): typeof HtmlWebpackPlugin[] => { const latestPostsByLocale = getLatestPostsByLocaleFromPostResponse( responses.postsResponse, responses.categoriesResponse, getLocales() ); const homeData: HomeData[] = []; forEach(getLocales(), locale => { homeData.push({ locale, latestPosts: latestPostsByLocale[locale], availableLocales: getLocales() }); }); return map( homeData, ({ locale, latestPosts, availableLocales }) => new HtmlWebpackPlugin({ filename: createFilenames.home(locale), template: templatePaths.home, chunks: chunksByPage.home, templateParameters: { ...createCommonConfig(locale, availableLocales, createPaths.home), // TODO available locales i18n: getPageAndGlobalTranslations(locale, "home"), latestPosts } }) ); }; export default homes;