( config: T, varName: string, varValue: string | undefined, )
| 1216 | } |
| 1217 | |
| 1218 | export function resolveVariableInConfig<T>( |
| 1219 | config: T, |
| 1220 | varName: string, |
| 1221 | varValue: string | undefined, |
| 1222 | ): T { |
| 1223 | let out: unknown; |
| 1224 | if (typeof config === 'string') { |
| 1225 | out = config.replace(new RegExp(`\\$\\{${varName}\\}`, 'g'), () => { |
| 1226 | if (!varValue) { |
| 1227 | throw new Error( |
| 1228 | `Unable to resolve \${${varName}} in configuration (${JSON.stringify(varName)})`, |
| 1229 | ); |
| 1230 | } |
| 1231 | return varValue; |
| 1232 | }); |
| 1233 | } else if (config instanceof Array) { |
| 1234 | out = config.map(cfg => resolveVariableInConfig(cfg, varName, varValue)); |
| 1235 | } else if (typeof config === 'object' && config) { |
| 1236 | const obj: { [key: string]: unknown } = {}; |
| 1237 | for (const [key, value] of Object.entries(config)) { |
| 1238 | obj[resolveVariableInConfig(key, varName, varValue)] = resolveVariableInConfig( |
| 1239 | value, |
| 1240 | varName, |
| 1241 | varValue, |
| 1242 | ); |
| 1243 | } |
| 1244 | out = obj; |
| 1245 | } else { |
| 1246 | out = config; |
| 1247 | } |
| 1248 | |
| 1249 | return out as T; |
| 1250 | } |
| 1251 | |
| 1252 | export const breakpointLanguages: ReadonlyArray<string> = [ |
| 1253 | 'javascript', |
no test coverage detected