MCPcopy Create free account
hub / github.com/Snapchat/Valdi / resolveVariableInConfig

Function resolveVariableInConfig

valdi/vscode_debugger/src/configuration.ts:1072–1104  ·  view source on GitHub ↗
(
  config: T,
  varName: string,
  varValue: string | undefined,
)

Source from the content-addressed store, hash-verified

1070}
1071
1072export function resolveVariableInConfig<T>(
1073 config: T,
1074 varName: string,
1075 varValue: string | undefined,
1076): T {
1077 let out: unknown;
1078 if (typeof config === 'string') {
1079 out = config.replace(new RegExp(`\\$\\{${varName}\\}`, 'g'), () => {
1080 if (!varValue) {
1081 throw new Error(
1082 `Unable to resolve \${${varName}} in configuration (${JSON.stringify(varName)})`,
1083 );
1084 }
1085 return varValue;
1086 });
1087 } else if (config instanceof Array) {
1088 out = config.map(cfg => resolveVariableInConfig(cfg, varName, varValue));
1089 } else if (typeof config === 'object' && config) {
1090 const obj: { [key: string]: unknown } = {};
1091 for (const [key, value] of Object.entries(config)) {
1092 obj[resolveVariableInConfig(key, varName, varValue)] = resolveVariableInConfig(
1093 value,
1094 varName,
1095 varValue,
1096 );
1097 }
1098 out = obj;
1099 } else {
1100 out = config;
1101 }
1102
1103 return out as T;
1104}
1105
1106export const breakpointLanguages: ReadonlyArray<string> = [
1107 'javascript',

Callers 5

guessOutFilesFunction · 0.90
guessOutFilesFunction · 0.90
resolveWorkspaceInConfigFunction · 0.85

Calls 3

entriesMethod · 0.80
replaceMethod · 0.65
mapMethod · 0.45

Tested by

no test coverage detected