Skip to content

Commit

Permalink
refactor(utils): Job - replace deep merge
Browse files Browse the repository at this point in the history
- use assignment instead of deep merge for perf
- type job sections
  • Loading branch information
vio committed Jan 22, 2023
1 parent 8078f12 commit d84e24c
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 22 deletions.
9 changes: 0 additions & 9 deletions packages/utils/src/config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,3 @@ export * from './delta';

export const PACKAGES_SEPARATOR = ':';
export const PACKAGE_ID_SEPARATOR = '~';

export const SOURCE_PATH_WEBPACK_STATS = 'webpack';
export const SOURCE_PATH_LIGHTHOUSE = 'lighthouse';
export const SOURCE_PATH_BROWSERTIME = 'browsertime';
export const SOURCE_PATHS = [
SOURCE_PATH_WEBPACK_STATS,
SOURCE_PATH_LIGHTHOUSE,
SOURCE_PATH_BROWSERTIME,
];
14 changes: 7 additions & 7 deletions packages/utils/src/jobs/create-job.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { SOURCE_PATHS } from '../config';
import { createSummary } from './create-summary';
import * as webpack from '../webpack';
import * as lighthouse from '../lighthouse';
Expand Down Expand Up @@ -27,7 +26,7 @@ export const createJob = (
): JobData => {
const job: JobData = {};

SOURCE_PATHS.forEach((sourcePath) => {
Object.values(Source).forEach((sourcePath) => {
const rawData = source[sourcePath];

if (!rawData) {
Expand All @@ -45,7 +44,7 @@ export const createJob = (

const summary = createSummary(
SOURCE_MODULES[sourcePath].SUMMARY_METRIC_PATHS,
baseline?.metrics?.[sourcePath as Source],
baseline?.metrics?.[sourcePath],
extractedData?.metrics,
);

Expand All @@ -72,17 +71,18 @@ export const createJob = (
[JobSectionId.rawData]: rawData,
};

Object.entries(dataMap).forEach(([dataId, data]: [JobSectionId, unknown]) => {
Object.entries(dataMap).forEach(([key, data]) => {
if (!data) {
return;
}

const dataId = key as JobSectionId;

if (!job[dataId]) {
job[dataId] = {};
job[dataId] = {} as any;
}

job[dataId][sourcePath] = data;

(job[dataId] as JobSection)[sourcePath] = data;
});
});

Expand Down
11 changes: 5 additions & 6 deletions packages/utils/src/report/create.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import isEmpty from 'lodash/isEmpty';

import { SOURCE_PATHS } from '../config';
import { MetricRunInfo, Job, JobSummarySource } from '../constants';
import { MetricRunInfo, Job, JobSummarySource, Source } from '../constants';
import { getGlobalMetricType, getMetricRunInfo } from '../utils/metrics';
import * as webpack from '../webpack';
/* @ts-ignore */
Expand Down Expand Up @@ -30,22 +29,22 @@ export const createReport = (jobs: Array<Job>): Report => {
// Add summary report data
const summary: Record<string, Array<ReportMetricRunInfo>> = {};

SOURCE_PATHS.forEach((sourceId) => {
const sourceSummary = jobs[0]?.summary?.[sourceId] as JobSummarySource;
Object.values(Source).forEach((source) => {
const sourceSummary = jobs[0]?.summary?.[source] as JobSummarySource;

if (!sourceSummary) {
return;
}

const summaryEntries = Object.entries(sourceSummary).map(([metricId, summaryData]) => {
const metric = getGlobalMetricType(`${sourceId}.${metricId}`);
const metric = getGlobalMetricType(`${source}.${metricId}`);
const { current = 0, baseline = 0 } = summaryData;
const data = getMetricRunInfo(metric, current, baseline);

return Object.assign(data, { label: metric.label });
});

summary[sourceId] = summaryEntries;
summary[source] = summaryEntries;
}, {});

const sectionsData = webpack.compare(jobs);
Expand Down

0 comments on commit d84e24c

Please sign in to comment.