Skip to content

Commit c5654b9

Browse files
authored
fix: filter report before applying changes (#127)
1 parent 5a69427 commit c5654b9

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/Optimizer.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Action, Report, ReportElement, Options, Output } from './Models';
1+
import { Action, Report, ReportElement, Options, Output, OptimizerInterface } from './Models';
22
import { parse } from '@asyncapi/parser';
33
import { RemoveComponents, ReuseComponents, MoveToComponents } from './Optimizers';
44
import YAML from 'js-yaml';
@@ -36,22 +36,25 @@ export class Optimizer {
3636
const parsedDocument = await parse(this.YAMLorJSON, { applyTraits: false });
3737
this.componentProvider = new ComponentProvider(parsedDocument);
3838
}
39-
const reuseComponents = new ReuseComponents(this.componentProvider);
40-
this.reuseComponentsReport = reuseComponents.getReport();
41-
this.reuseComponentsReport.sort(this.sortFunction);
42-
const removeComponents = new RemoveComponents(this.componentProvider);
43-
this.removeComponentsReport = removeComponents.getReport();
44-
this.removeComponentsReport.sort(this.sortFunction);
45-
const moveToComponents = new MoveToComponents(this.componentProvider);
46-
this.moveToComponentsReport = moveToComponents.getReport();
47-
this.moveToComponentsReport.sort(this.sortFunction);
39+
this.reuseComponentsReport = this.createReport(new ReuseComponents(this.componentProvider));
40+
this.removeComponentsReport = this.createReport(new RemoveComponents(this.componentProvider));
41+
this.moveToComponentsReport = this.createReport(new MoveToComponents(this.componentProvider));
4842

4943
return {
5044
reuseComponents: this.reuseComponentsReport,
5145
removeComponents: this.removeComponentsReport,
5246
moveToComponents: this.moveToComponentsReport
5347
};
5448
}
49+
private createReport(optimizer: OptimizerInterface) {
50+
return optimizer
51+
.getReport()
52+
.filter(this.reportFilter)
53+
.sort(this.sortFunction);
54+
}
55+
reportFilter = (reportElement: ReportElement): boolean => {
56+
return this.hasParent(reportElement.path);
57+
};
5558

5659
private sortFunction(a: ReportElement, b: ReportElement): number { return (a.action.length - b.action.length || b.path.length - a.path.length);}
5760

@@ -116,9 +119,6 @@ export class Optimizer {
116119

117120
private applyChanges(changes: ReportElement[]): void {
118121
for (const change of changes) {
119-
if (!this.hasParent(change.path)) {
120-
continue;
121-
}
122122
switch (change.action) {
123123
case Action.Move:
124124
_.set(this.outputObject, change.target as string, _.get(this.outputObject, change.path));

0 commit comments

Comments
 (0)