39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
/**
|
|
* Shared utilities for expanding environment variables in MCP server configurations
|
|
*/
|
|
|
|
/**
|
|
* Expand environment variables in a string value
|
|
* Handles ${VAR} and ${VAR:-default} syntax
|
|
* @returns Object with expanded string and list of missing variables
|
|
*/
|
|
export function expandEnvVarsInString(value: string): {
|
|
expanded: string
|
|
missingVars: string[]
|
|
} {
|
|
const missingVars: string[] = []
|
|
|
|
const expanded = value.replace(/\$\{([^}]+)\}/g, (match, varContent) => {
|
|
// Split on :- to support default values (limit to 2 parts to preserve :- in defaults)
|
|
const [varName, defaultValue] = varContent.split(':-', 2)
|
|
const envValue = process.env[varName]
|
|
|
|
if (envValue !== undefined) {
|
|
return envValue
|
|
}
|
|
if (defaultValue !== undefined) {
|
|
return defaultValue
|
|
}
|
|
|
|
// Track missing variable for error reporting
|
|
missingVars.push(varName)
|
|
// Return original if not found (allows debugging but will be reported as error)
|
|
return match
|
|
})
|
|
|
|
return {
|
|
expanded,
|
|
missingVars,
|
|
}
|
|
}
|