UNPKG

md-toy-blog

Version:

Very simple Markdown blog: serves your md as html without fancy databases. You will only spend time writing the actual data.

34 lines (31 loc) 1.31 kB
import { LoadDictElement } from 'di-why/build/src/DiContainer'; import asyncFilter from '../utils/asyncFilter'; type PostSlugList = string[]; type FactoryProps = { validPostSlugListGetter: () => PostSlugList; markdownToHtmlService: MarkdownToHtmlServiceInterface; appPaths: AppPathsInterface; }; const loadDictElement: LoadDictElement<Promise<PostSlugList>> = { factory: async ({ validPostSlugListGetter, markdownToHtmlService, appPaths }: FactoryProps) => { const privateAndPublicPostSlugList = validPostSlugListGetter(); const extractPostData = async (postSlug: string) => { try { const postData = await markdownToHtmlService.extractFmAttributesAndHtmlBodyFromMd(postSlug, appPaths.getMarkdownFilePath(postSlug)); return postData; } catch (err) { console.log(err.message); throw err; } } const isPublic = async (postSlug: string) => (await extractPostData(postSlug)).attributes.privacy === "public"; const onlyPublicPostSlugList = await asyncFilter(privateAndPublicPostSlugList, isPublic) return onlyPublicPostSlugList; }, locateDeps: { appPaths: 'appPathResolverService', validPostSlugListGetter: 'validPostSlugListGetter', markdownToHtmlService: 'markdownToHtmlService' }, }; export default loadDictElement;