Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 3x 2x 2x 2x 5x 2x 2x 1x 1x | import { FlowTarget, FlowRuleGroup, ResolvedFlowTarget } from "../FlowDefinitions"; import { LoggerFactory } from "../logger-factory"; import { Logger } from "../logger-type"; import { TargetResolver } from './objects/TargetResolver'; export class TargetDefinitionResolver { private logger: Logger; private objectResolvers: TargetResolver[]; constructor(loggerFactory: LoggerFactory, ...typeSpecificResolvers: TargetResolver[] ) { this.logger = loggerFactory.getLogger('TargetDefinitionResolver'); this.objectResolvers = typeSpecificResolvers; } // https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources public async resolveTarget(ruleObject: FlowTarget, ruleGroup?: FlowRuleGroup): Promise<ResolvedFlowTarget> { this.logger.info(`number of resolvers ${this.objectResolvers.length}, resolving object`, ruleObject) const targetResolver = this.objectResolvers.find(objResolver => objResolver.canResolve(ruleObject)) this.logger.info(`use resolver ${targetResolver}`, ruleObject) if (targetResolver) { return targetResolver.resolve(ruleObject, ruleGroup); } else { throw new Error( `An error resolving object, no supported resolver found ${JSON.stringify(ruleObject)}`, ); } } } |