diff --git a/src/utils/config.ts b/src/utils/config.ts deleted file mode 100644 index 5bd2cc9..0000000 --- a/src/utils/config.ts +++ /dev/null @@ -1,208 +0,0 @@ -import fs from 'fs'; -import yaml from 'js-yaml'; -import merge from 'lodash.merge'; - -import type { MetaData } from '~/types'; - -export interface SiteConfig { - name: string; - site?: string; - base?: string; - trailingSlash?: boolean; - googleSiteVerificationId?: string; -} -export interface MetaDataConfig extends Omit { - title?: { - default: string; - template: string; - }; -} -export interface I18NConfig { - language: string; - textDirection: string; - dateFormatter?: Intl.DateTimeFormat; -} -export interface AppBlogConfig { - isEnabled: boolean; - postsPerPage: number; - isRelatedPostsEnabled: boolean; - relatedPostsCount: number; - post: { - isEnabled: boolean; - permalink: string; - robots: { - index: boolean; - follow: boolean; - }; - }; - list: { - isEnabled: boolean; - pathname: string; - robots: { - index: boolean; - follow: boolean; - }; - }; - category: { - isEnabled: boolean; - pathname: string; - robots: { - index: boolean; - follow: boolean; - }; - }; - tag: { - isEnabled: boolean; - pathname: string; - robots: { - index: boolean; - follow: boolean; - }; - }; -} -export interface AnalyticsConfig { - vendors: { - googleAnalytics: { - id?: string; - partytown?: boolean; - }; - }; -} - -const config = yaml.load(fs.readFileSync('src/config.yaml', 'utf8')) as { - site?: SiteConfig; - metadata?: MetaDataConfig; - i18n?: I18NConfig; - apps?: { - blog?: AppBlogConfig; - }; - ui?: unknown; - analytics?: unknown; -}; - -const DEFAULT_SITE_NAME = 'Website'; - -const getSite = () => { - const _default = { - name: DEFAULT_SITE_NAME, - site: undefined, - base: '/', - trailingSlash: false, - - googleSiteVerificationId: '', - }; - - return merge({}, _default, config?.site ?? {}) as SiteConfig; -}; - -const getMetadata = () => { - const siteConfig = getSite(); - - const _default = { - title: { - default: siteConfig?.name || DEFAULT_SITE_NAME, - template: '%s', - }, - description: '', - robots: { - index: false, - follow: false, - }, - openGraph: { - type: 'website', - }, - }; - - return merge({}, _default, config?.metadata ?? {}) as MetaDataConfig; -}; - -const getI18N = () => { - const _default = { - language: 'en', - textDirection: 'ltr', - }; - - const value = merge({}, _default, config?.i18n ?? {}); - - return Object.assign(value, { - dateFormatter: new Intl.DateTimeFormat(value.language, { - year: 'numeric', - month: 'short', - day: 'numeric', - timeZone: 'UTC', - }), - }) as I18NConfig; -}; - -const getAppBlog = () => { - const _default = { - isEnabled: false, - postsPerPage: 6, - isRelatedPostsEnabled: false, - relatedPostsCount: 4, - post: { - isEnabled: true, - permalink: '/blog/%slug%', - robots: { - index: true, - follow: true, - }, - }, - list: { - isEnabled: true, - pathname: 'blog', - robots: { - index: true, - follow: true, - }, - }, - category: { - isEnabled: true, - pathname: 'category', - robots: { - index: true, - follow: true, - }, - }, - tag: { - isEnabled: true, - pathname: 'tag', - robots: { - index: false, - follow: true, - }, - }, - }; - - return merge({}, _default, config?.apps?.blog ?? {}) as AppBlogConfig; -}; - -const getUI = () => { - const _default = { - theme: 'system', - classes: {}, - tokens: {}, - }; - - return merge({}, _default, config?.ui ?? {}); -}; - -const getAnalytics = () => { - const _default = { - vendors: { - googleAnalytics: { - id: undefined, - partytown: true, - }, - }, - }; - - return merge({}, _default, config?.analytics ?? {}) as AnalyticsConfig; -}; - -export const SITE = getSite(); -export const I18N = getI18N(); -export const METADATA = getMetadata(); -export const APP_BLOG = getAppBlog(); -export const UI = getUI(); -export const ANALYTICS = getAnalytics();