web-snaps
Version:
Browser automation with automatic snapshotting.
30 lines (29 loc) • 891 B
JavaScript
import { arrayToObject } from '@augment-vir/common';
/**
* Create a {@link PhaseNamesEnum} value from the given {@link WebFlow}.
*
* @category Internal
*/
export function createPhaseNamesEnum(webFlow) {
const duplicatePhaseNames = webFlow.phases.reduce((accum, phase) => {
if (phase.name in accum.allNames) {
accum.duplicateNames.add(phase.name);
}
else {
accum.allNames.add(phase.name);
}
return accum;
}, {
allNames: new Set(),
duplicateNames: new Set(),
}).duplicateNames;
if (duplicatePhaseNames.size) {
throw new Error(`Duplicate phase names given in WebFlow '${webFlow.flowKey}': ${Array.from(duplicatePhaseNames).join(',')}`);
}
return arrayToObject(webFlow.phases, ({ name }) => {
return {
key: name,
value: name,
};
});
}