import FlaggerSupportChecker from "./FlaggerSupportChecker"; import {z} from "zod"; const FlaggerSpecificSupportCheckerOptions = z.object({ supportName: z.string() }); export default class FlaggerSpecificSupportChecker extends FlaggerSupportChecker { readonly name = 'specific'; readonly #specificFeatureChecker: Map>; constructor(checkers: FlaggerSupportChecker[]) { super(FlaggerSpecificSupportCheckerOptions); this.#specificFeatureChecker = new Map( checkers.map(checker => [checker.name, checker]) ); } protected async canSupportFeature(options: z.infer): Promise { const specificFeatureChecker = this.#specificFeatureChecker.get(options.supportName); return typeof specificFeatureChecker?.supports === 'function' ? await specificFeatureChecker.supports(options) : false; } }