From c5654b9b3bce51ce459cca357d52eb1e767ca956 Mon Sep 17 00:00:00 2001 From: Khuda Dad Nomani <32505158+KhudaDad414@users.noreply.github.com> Date: Tue, 22 Nov 2022 09:54:27 +0000 Subject: [PATCH] fix: filter report before applying changes (#127) --- src/Optimizer.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Optimizer.ts b/src/Optimizer.ts index 57bbb593..f91662ac 100644 --- a/src/Optimizer.ts +++ b/src/Optimizer.ts @@ -1,4 +1,4 @@ -import { Action, Report, ReportElement, Options, Output } from './Models'; +import { Action, Report, ReportElement, Options, Output, OptimizerInterface } from './Models'; import { parse } from '@asyncapi/parser'; import { RemoveComponents, ReuseComponents, MoveToComponents } from './Optimizers'; import YAML from 'js-yaml'; @@ -36,15 +36,9 @@ export class Optimizer { const parsedDocument = await parse(this.YAMLorJSON, { applyTraits: false }); this.componentProvider = new ComponentProvider(parsedDocument); } - const reuseComponents = new ReuseComponents(this.componentProvider); - this.reuseComponentsReport = reuseComponents.getReport(); - this.reuseComponentsReport.sort(this.sortFunction); - const removeComponents = new RemoveComponents(this.componentProvider); - this.removeComponentsReport = removeComponents.getReport(); - this.removeComponentsReport.sort(this.sortFunction); - const moveToComponents = new MoveToComponents(this.componentProvider); - this.moveToComponentsReport = moveToComponents.getReport(); - this.moveToComponentsReport.sort(this.sortFunction); + this.reuseComponentsReport = this.createReport(new ReuseComponents(this.componentProvider)); + this.removeComponentsReport = this.createReport(new RemoveComponents(this.componentProvider)); + this.moveToComponentsReport = this.createReport(new MoveToComponents(this.componentProvider)); return { reuseComponents: this.reuseComponentsReport, @@ -52,6 +46,15 @@ export class Optimizer { moveToComponents: this.moveToComponentsReport }; } + private createReport(optimizer: OptimizerInterface) { + return optimizer + .getReport() + .filter(this.reportFilter) + .sort(this.sortFunction); + } + reportFilter = (reportElement: ReportElement): boolean => { + return this.hasParent(reportElement.path); + }; private sortFunction(a: ReportElement, b: ReportElement): number { return (a.action.length - b.action.length || b.path.length - a.path.length);} @@ -116,9 +119,6 @@ export class Optimizer { private applyChanges(changes: ReportElement[]): void { for (const change of changes) { - if (!this.hasParent(change.path)) { - continue; - } switch (change.action) { case Action.Move: _.set(this.outputObject, change.target as string, _.get(this.outputObject, change.path));