import { map, pipe } from "rxjs"; import { reduceCollection, distinctIfShallowMatch } from "@bitwarden/common/tools/rx"; import { DefaultPolicyEvaluator } from "./default-policy-evaluator"; import { PolicyConfiguration } from "./policies"; /** Maps an administrative console policy to a policy evaluator using the provided configuration. * @param configuration the configuration that constructs the evaluator. */ export function mapPolicyToEvaluator( configuration: PolicyConfiguration, ) { return pipe( reduceCollection(configuration.combine, configuration.disabledValue), distinctIfShallowMatch(), map(configuration.createEvaluator), ); } /** Constructs a method that maps a policy to the default (no-op) policy. */ export function newDefaultEvaluator() { return () => { return pipe(map((_) => new DefaultPolicyEvaluator())); }; }