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.
42 lines (38 loc) • 2.12 kB
text/typescript
import appConfig from '../config/appConfig';
import { LoadDictElement } from 'di-why/build/src/DiContainer';
// TODO what's the point of loading unknown app config?
// Using userCustomConfig should suffice, but in case
// this repo is cloned and the dev starts adding configs
// this will augment types
export type PossiblyEnhancedAppConfig = AppConfig & typeof appConfig;
const loadDictElement: LoadDictElement<PossiblyEnhancedAppConfig> = {
factory: function ({ userCustomConfig: u, ...defaultConfig }: AppConfigFactoryParams) {
return {
compiledUserContentDir: u.compiledUserContentDir ?? defaultConfig.compiledUserContentDir,
missingRefValueReplacement: u.missingRefValueReplacement ?? defaultConfig.missingRefValueReplacement,
mdBlogPostsDir: u.mdBlogPostsDir ?? defaultConfig.mdBlogPostsDir,
packageName: u.packageName ?? defaultConfig.packageName,
previewLength: u.previewLength ?? defaultConfig.previewLength,
staticFilesDir: u.staticFilesDir ?? defaultConfig.staticFilesDir,
pagesDir: u.pagesDir ?? defaultConfig.pagesDir,
viewTemplatesDir: u.viewTemplatesDir ?? defaultConfig.viewTemplatesDir,
userCustomConfigPath: u.userCustomConfigPath ?? defaultConfig.userCustomConfigPath,
userProjectRootDir: u.userProjectRootDir ?? defaultConfig.userProjectRootDir,
...appConfig, // TODO this should be overridable by user, figure out how the heck I can loop over each key instead of listing them here like a moron (no Index type string signature)
};
},
locateDeps: {
compiledUserContentDir: 'MTB_COMPILED_USER_CONTENT_DIR',
missingRefValueReplacement: 'MTB_MISSING_REF_VALUE_REPLACEMENT',
mdBlogPostsDir: 'MTB_MD_BLOG_POSTS_DIR',
packageName: 'MTB_PACKAGE_NAME',
previewLength: 'MTB_POST_PREVIEW_LENGTH',
staticFilesDir: 'MTB_STATIC_FILES_DIR',
pagesDir: 'MTB_PAGES_DIR',
viewTemplatesDir: 'MTB_VIEW_TEMPLATES_DIR',
userCustomConfigPath: 'MTB_USER_CUSTOM_CONFIG_PATH',
userProjectRootDir: 'MTB_USER_PROJECT_ROOT_DIR',
userCustomConfig: 'userCustomConfig',
}
};
export default loadDictElement;