42 lines
957 B
TypeScript
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;
|