Files
automatisch/packages/web/src/helpers/computeVariables.ts
2022-11-05 23:57:33 +01:00

42 lines
957 B
TypeScript

import template from 'lodash/template';
import type { IAuthenticationStepField, IJSONObject } from '@automatisch/types';
const interpolate = /{([\s\S]+?)}/g;
type Variables = {
[key: string]: any;
};
type IVariable = Omit<IAuthenticationStepField, 'properties'> &
Partial<Pick<IAuthenticationStepField, 'properties'>>;
const computeAuthStepVariables = (
variableSchema: IVariable[],
aggregatedData: IJSONObject
): IJSONObject => {
const variables: Variables = {};
for (const variable of variableSchema) {
if (variable.properties) {
variables[variable.name] = computeAuthStepVariables(
variable.properties,
aggregatedData
);
continue;
}
if (variable.value) {
const computedVariable = template(variable.value, { interpolate })(
aggregatedData
);
variables[variable.name] = computedVariable;
}
}
return variables;
};
export default computeAuthStepVariables;