名称Branding变更
This commit is contained in:
1 parent
c74c1e3914
commit
8b5103d542
41 files changed
+282
-93
No files matched your search
@@ -0,0 +1,36 @@
|
||||
import { readFileSync } from 'node:fs'
|
||||
|
||||
export interface AppBranding {
|
||||
brandName: string
|
||||
institutionName: string
|
||||
productName: string
|
||||
shortName: string
|
||||
tagline: string
|
||||
description: string
|
||||
}
|
||||
|
||||
interface AppSettings {
|
||||
Branding?: Partial<Record<keyof AppBranding | Capitalize<keyof AppBranding>, unknown>>
|
||||
}
|
||||
|
||||
const appsettings = JSON.parse(
|
||||
readFileSync(new URL('../src/Jiaowu.Api/appsettings.json', import.meta.url), 'utf8'),
|
||||
) as AppSettings
|
||||
|
||||
function required(field: keyof AppBranding): string {
|
||||
const pascalCase = `${field.charAt(0).toUpperCase()}${field.slice(1)}` as Capitalize<keyof AppBranding>
|
||||
const value = appsettings.Branding?.[pascalCase] ?? appsettings.Branding?.[field]
|
||||
if (typeof value !== 'string' || !value.trim()) {
|
||||
throw new Error(`appsettings.json 中缺少 Branding:${pascalCase}。`)
|
||||
}
|
||||
return value.trim()
|
||||
}
|
||||
|
||||
export const branding: Readonly<AppBranding> = Object.freeze({
|
||||
brandName: required('brandName'),
|
||||
institutionName: required('institutionName'),
|
||||
productName: required('productName'),
|
||||
shortName: required('shortName'),
|
||||
tagline: required('tagline'),
|
||||
description: required('description'),
|
||||
})
|
||||
Reference in new issue
Block a user