- fixed Year-Prefix Bug in MetricParser - added metric_confidence and metric_proof_text to database - added Entity-Check and Annual-Priority to LLM prompt - improved UI: added confidence traffic light and mouse-over proof tooltip - restored missing API endpoints (create, bulk, wiki-override)
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import { AnyConfig, ConfigExtension } from './types'
|
|
|
|
/**
|
|
* @param baseConfig Config where other config will be merged into. This object will be mutated.
|
|
* @param configExtension Partial config to merge into the `baseConfig`.
|
|
*/
|
|
export const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(
|
|
baseConfig: AnyConfig,
|
|
{
|
|
cacheSize,
|
|
prefix,
|
|
separator,
|
|
experimentalParseClassName,
|
|
extend = {},
|
|
override = {},
|
|
}: ConfigExtension<ClassGroupIds, ThemeGroupIds>,
|
|
) => {
|
|
overrideProperty(baseConfig, 'cacheSize', cacheSize)
|
|
overrideProperty(baseConfig, 'prefix', prefix)
|
|
overrideProperty(baseConfig, 'separator', separator)
|
|
overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)
|
|
|
|
for (const configKey in override) {
|
|
overrideConfigProperties(
|
|
baseConfig[configKey as keyof typeof override],
|
|
override[configKey as keyof typeof override],
|
|
)
|
|
}
|
|
|
|
for (const key in extend) {
|
|
mergeConfigProperties(
|
|
baseConfig[key as keyof typeof extend],
|
|
extend[key as keyof typeof extend],
|
|
)
|
|
}
|
|
|
|
return baseConfig
|
|
}
|
|
|
|
const overrideProperty = <T extends object, K extends keyof T>(
|
|
baseObject: T,
|
|
overrideKey: K,
|
|
overrideValue: T[K] | undefined,
|
|
) => {
|
|
if (overrideValue !== undefined) {
|
|
baseObject[overrideKey] = overrideValue
|
|
}
|
|
}
|
|
|
|
const overrideConfigProperties = (
|
|
baseObject: Partial<Record<string, readonly unknown[]>>,
|
|
overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,
|
|
) => {
|
|
if (overrideObject) {
|
|
for (const key in overrideObject) {
|
|
overrideProperty(baseObject, key, overrideObject[key])
|
|
}
|
|
}
|
|
}
|
|
|
|
const mergeConfigProperties = (
|
|
baseObject: Partial<Record<string, readonly unknown[]>>,
|
|
mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,
|
|
) => {
|
|
if (mergeObject) {
|
|
for (const key in mergeObject) {
|
|
const mergeValue = mergeObject[key]
|
|
|
|
if (mergeValue !== undefined) {
|
|
baseObject[key] = (baseObject[key] || []).concat(mergeValue)
|
|
}
|
|
}
|
|
}
|
|
}
|