( config: T, varName: string, varValue: string | undefined, )
| 1070 | } |
| 1071 | |
| 1072 | export 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 | |
| 1106 | export const breakpointLanguages: ReadonlyArray<string> = [ |
| 1107 | 'javascript', |
no test coverage detected