@bundle-stats/utils 4.2.0-beta.1 → 4.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/lib/config/insights.js +7 -5
  2. package/lib/config/insights.js.map +1 -1
  3. package/lib/constants.js +12 -12
  4. package/lib/constants.js.map +1 -1
  5. package/lib/index.js +1 -0
  6. package/lib/index.js.map +1 -1
  7. package/lib/jobs/create-job.js +21 -10
  8. package/lib/jobs/create-job.js.map +1 -1
  9. package/lib/jobs/create-jobs.js +13 -17
  10. package/lib/jobs/create-jobs.js.map +1 -1
  11. package/lib/jobs/create-summary.js +10 -11
  12. package/lib/jobs/create-summary.js.map +1 -1
  13. package/lib/jobs/index.js.map +1 -1
  14. package/lib/lighthouse/filter.js.map +1 -1
  15. package/lib/report/create.js +10 -15
  16. package/lib/report/create.js.map +1 -1
  17. package/lib/utils/metrics.js.map +1 -1
  18. package/lib/webpack/constants.js +12 -11
  19. package/lib/webpack/constants.js.map +1 -1
  20. package/lib/webpack/extract/assets-size-total-insight.js +5 -5
  21. package/lib/webpack/extract/assets-size-total-insight.js.map +1 -1
  22. package/lib/webpack/extract/assets-size.js +3 -4
  23. package/lib/webpack/extract/assets-size.js.map +1 -1
  24. package/lib/webpack/extract/modules-packages-duplicate.js +26 -36
  25. package/lib/webpack/extract/modules-packages-duplicate.js.map +1 -1
  26. package/lib/webpack/extract/modules-packages.js.map +1 -1
  27. package/lib/webpack/extract/modules.js +0 -2
  28. package/lib/webpack/extract/modules.js.map +1 -1
  29. package/lib/webpack/metrics.js +27 -25
  30. package/lib/webpack/metrics.js.map +1 -1
  31. package/lib/webpack/types.js +24 -0
  32. package/lib/webpack/types.js.map +1 -1
  33. package/lib-esm/config/insights.js +6 -4
  34. package/lib-esm/config/insights.js.map +1 -1
  35. package/lib-esm/constants.js +12 -12
  36. package/lib-esm/constants.js.map +1 -1
  37. package/lib-esm/index.js +1 -0
  38. package/lib-esm/index.js.map +1 -1
  39. package/lib-esm/jobs/create-job.js +22 -10
  40. package/lib-esm/jobs/create-job.js.map +1 -1
  41. package/lib-esm/jobs/create-jobs.js +13 -14
  42. package/lib-esm/jobs/create-jobs.js.map +1 -1
  43. package/lib-esm/jobs/create-summary.js +10 -11
  44. package/lib-esm/jobs/create-summary.js.map +1 -1
  45. package/lib-esm/jobs/index.js.map +1 -1
  46. package/lib-esm/lighthouse/filter.js.map +1 -1
  47. package/lib-esm/report/create.js +10 -15
  48. package/lib-esm/report/create.js.map +1 -1
  49. package/lib-esm/utils/metrics.js.map +1 -1
  50. package/lib-esm/webpack/constants.js +12 -11
  51. package/lib-esm/webpack/constants.js.map +1 -1
  52. package/lib-esm/webpack/extract/assets-size-total-insight.js +6 -6
  53. package/lib-esm/webpack/extract/assets-size-total-insight.js.map +1 -1
  54. package/lib-esm/webpack/extract/assets-size.js +3 -4
  55. package/lib-esm/webpack/extract/assets-size.js.map +1 -1
  56. package/lib-esm/webpack/extract/modules-packages-duplicate.js +28 -37
  57. package/lib-esm/webpack/extract/modules-packages-duplicate.js.map +1 -1
  58. package/lib-esm/webpack/extract/modules-packages.js.map +1 -1
  59. package/lib-esm/webpack/extract/modules.js +0 -3
  60. package/lib-esm/webpack/extract/modules.js.map +1 -1
  61. package/lib-esm/webpack/metrics.js +27 -25
  62. package/lib-esm/webpack/metrics.js.map +1 -1
  63. package/lib-esm/webpack/types.js +23 -1
  64. package/lib-esm/webpack/types.js.map +1 -1
  65. package/package.json +11 -10
  66. package/src/config/insights.ts +5 -0
  67. package/src/constants.ts +38 -15
  68. package/src/index.js +1 -0
  69. package/src/jobs/create-job.ts +62 -0
  70. package/src/jobs/create-jobs.ts +28 -0
  71. package/src/jobs/create-summary.ts +22 -0
  72. package/src/jobs/{index.js → index.ts} +0 -0
  73. package/src/lighthouse/filter.js +8 -5
  74. package/src/report/create.ts +31 -23
  75. package/src/utils/metrics.js +8 -7
  76. package/src/webpack/constants.js +13 -11
  77. package/src/webpack/extract/assets-size-total-insight.js +6 -7
  78. package/src/webpack/extract/assets-size.js +29 -24
  79. package/src/webpack/extract/modules-packages-duplicate.ts +105 -0
  80. package/src/webpack/extract/modules-packages.ts +1 -1
  81. package/src/webpack/extract/modules.ts +1 -4
  82. package/src/webpack/metrics.js +27 -25
  83. package/src/webpack/types.ts +31 -7
  84. package/types/config/insights.d.ts +5 -4
  85. package/types/constants.d.ts +33 -15
  86. package/types/index.d.ts +1 -0
  87. package/types/jobs/create-job.d.ts +2 -1
  88. package/types/jobs/create-jobs.d.ts +2 -1
  89. package/types/jobs/create-summary.d.ts +4 -1
  90. package/types/jobs/index.d.ts +2 -2
  91. package/types/lighthouse/filter.d.ts +1 -1
  92. package/types/report/add-row-metric-data.d.ts +10 -1
  93. package/types/report/create.d.ts +14 -12
  94. package/types/utils/metrics.d.ts +1 -1
  95. package/types/webpack/constants.d.ts +2 -1
  96. package/types/webpack/extract/assets-size-total-insight.d.ts +3 -2
  97. package/types/webpack/extract/modules-packages-duplicate.d.ts +5 -4
  98. package/types/webpack/extract/modules-packages.d.ts +1 -1
  99. package/types/webpack/types.d.ts +29 -8
  100. package/src/config/insights.js +0 -5
  101. package/src/jobs/create-job.js +0 -46
  102. package/src/jobs/create-jobs.js +0 -26
  103. package/src/jobs/create-summary.js +0 -16
  104. package/src/webpack/extract/modules-packages-duplicate.js +0 -102
@@ -1,44 +1,35 @@
1
- import get from 'lodash/get';
2
1
  import map from 'lodash/map';
3
2
  import orderBy from 'lodash/orderBy';
4
3
  import sum from 'lodash/sum';
5
- import { INSIGHT_WARNING } from '../../config';
6
- export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedData) => {
7
- const source = get(currentExtractedData, 'metrics.packages', {});
8
- const packagesByName = Object.entries(source).reduce((agg, [packageId, packageData]) => {
9
- const { name } = packageData;
10
- const existingPackageData = agg[name];
11
- return {
12
- ...agg,
13
- [name]: {
14
- ...existingPackageData,
15
- children: [
16
- ...((existingPackageData === null || existingPackageData === void 0 ? void 0 : existingPackageData.children) || []),
17
- {
18
- name: packageId,
19
- value: packageData.value,
20
- },
21
- ],
22
- },
4
+ import { InsightType } from '../../config';
5
+ export const extractModulesPackagesDuplicate = (_, currentExtractedData) => {
6
+ var _a;
7
+ const source = ((_a = currentExtractedData === null || currentExtractedData === void 0 ? void 0 : currentExtractedData.metrics) === null || _a === void 0 ? void 0 : _a.packages) || {};
8
+ const packagesByName = {};
9
+ Object.entries(source).forEach(([packageId, packageData]) => {
10
+ const { name, value } = packageData;
11
+ const existingPackageData = packagesByName[name] || {
12
+ name,
13
+ value,
14
+ children: [],
23
15
  };
24
- }, {});
25
- const { count, duplicatePackages } = Object.entries(packagesByName).reduce((agg, [name, data]) => {
26
- const duplicateInstances = data.children.length - 1;
16
+ existingPackageData.children.push({ id: packageId, value });
17
+ packagesByName[name] = existingPackageData;
18
+ });
19
+ let count = 0;
20
+ const duplicatePackages = [];
21
+ Object.entries(packagesByName).forEach(([packageGroupName, packageGroupData]) => {
22
+ const duplicateInstances = packageGroupData.children.length - 1;
27
23
  if (duplicateInstances === 0) {
28
- return agg;
24
+ return;
29
25
  }
30
- return {
31
- count: agg.count + duplicateInstances,
32
- duplicatePackages: [
33
- ...(agg.duplicatePackages || []),
34
- {
35
- name,
36
- value: sum(map(data.children, 'value')),
37
- ...data,
38
- },
39
- ],
40
- };
41
- }, { count: 0, duplicatePackages: [] });
26
+ count += duplicateInstances;
27
+ duplicatePackages.push({
28
+ name: packageGroupName,
29
+ value: sum(map(packageGroupData.children, 'value')),
30
+ children: packageGroupData.children,
31
+ });
32
+ });
42
33
  if (!count) {
43
34
  return {
44
35
  metrics: {
@@ -57,12 +48,12 @@ export const extractModulesPackagesDuplicate = (webpackStats, currentExtractedDa
57
48
  }), {});
58
49
  const data = Object.entries(duplicatePackagesByName).reduce((agg, [packageName, duplicatePackageData]) => ({
59
50
  ...agg,
60
- [packageName]: duplicatePackageData.children.map(({ name }) => name),
51
+ [packageName]: duplicatePackageData.children.map(({ id }) => id),
61
52
  }), {});
62
53
  return {
63
54
  insights: {
64
55
  duplicatePackages: {
65
- type: INSIGHT_WARNING,
56
+ type: InsightType.WARNING,
66
57
  data,
67
58
  },
68
59
  },
@@ -1 +1 @@
1
- {"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.js"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,YAAY,EAAE,oBAAoB,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAGjE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;QACrF,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;QAC7B,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtC,OAAO;YACL,GAAG,GAAG;YACN,CAAC,IAAI,CAAC,EAAE;gBACN,GAAG,mBAAmB;gBACtB,QAAQ,EAAE;oBACR,GAAG,CAAC,CAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,QAAQ,KAAI,EAAE,CAAC;oBACxC;wBACE,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,WAAW,CAAC,KAAK;qBACzB;iBACF;aACF;SACF,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAGP,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CACxE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAGpB,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAGpD,IAAI,kBAAkB,KAAK,CAAC,EAAE;YAC5B,OAAO,GAAG,CAAC;SACZ;QAED,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,kBAAkB;YACrC,iBAAiB,EAAE;gBACjB,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;gBAChC;oBACE,IAAI;oBACJ,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACvC,GAAG,IAAI;iBACR;aACF;SACF,CAAC;IACJ,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,CACpC,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;YACL,OAAO,EAAE;gBACP,sBAAsB,EAAE;oBACtB,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC;KACH;IAED,MAAM,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAChF,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,GAAG;QACN,CAAC,IAAI,CAAC,EAAE;YACN,GAAG,oBAAoB;YACvB,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;SAClE;KACF,CAAC,EACF,EAAE,CACH,CAAC;IAIF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,MAAM,CACzD,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,GAAG,GAAG;QACN,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;KACrE,CAAC,EACF,EAAE,CACH,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE;YACR,iBAAiB,EAAE;gBACjB,IAAI,EAAE,eAAe;gBACrB,IAAI;aACL;SACF;QACD,OAAO,EAAE;YACP,sBAAsB,EAAE;gBACtB,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"modules-packages-duplicate.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages-duplicate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules-packages.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules-packages.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,6 @@ export const extractModules = (webpackStats) => {
28
28
  let duplicateCodeSize = 0;
29
29
  let duplicateModulesCount = 0;
30
30
  const modules = allModules.reduce((agg, moduleEntry) => {
31
- var _a;
32
31
  const { name, size = 0, chunks } = moduleEntry;
33
32
  const normalizedName = getModuleName(name);
34
33
  if (!chunks || (chunks === null || chunks === void 0 ? void 0 : chunks.length) === 0) {
@@ -40,13 +39,11 @@ export const extractModules = (webpackStats) => {
40
39
  duplicateModulesCount += duplicateInstances;
41
40
  duplicateCodeSize += duplicateInstances * size;
42
41
  totalCodeSize += instances * size;
43
- const reasons = (_a = moduleEntry.reasons) === null || _a === void 0 ? void 0 : _a.map((reason) => getModuleName(reason.module));
44
42
  agg[normalizedName] = {
45
43
  name,
46
44
  value: size,
47
45
  chunkIds: chunks.map(normalizeChunkId),
48
46
  duplicated: Boolean(duplicateInstances),
49
- ...(reasons && { reasons }),
50
47
  };
51
48
  return agg;
52
49
  }, {});
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK3D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAAmC,EAAkB,EAAE;IACpF,MAAM,aAAa,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC;IAE5C,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC3B,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACnC,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aAC1B;SACF,CAAC;KACH;IAGD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtB,OAAO,GAAG,CAAC;SACZ;QAGD,GAAG,GAAG,GAAG,CAAC,MAAM,CACd,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,kBAAkB;YAErB,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B,CAAC,CAAC,CACJ,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,CAAC;IAEhD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAG9B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;;QACrD,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;QAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAG3C,IAAI,CAAC,MAAM,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,CAAC,EAAE;YACnC,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC;QAEzC,WAAW,IAAI,SAAS,CAAC;QACzB,qBAAqB,IAAI,kBAAkB,CAAC;QAC5C,iBAAiB,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAC/C,aAAa,IAAI,SAAS,GAAG,IAAI,CAAC;QAElC,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAGnF,GAAG,CAAC,cAAc,CAAC,GAAG;YACpB,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACtC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC;YACvC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;SAC5B,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA4B,CAAC,CAAC;IAEjC,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO;QACL,OAAO,EAAE;YACP,OAAO;YACP,aAAa,EAAE;gBACb,KAAK,EAAE,aAAa;aACrB;YACD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,qBAAqB;aAC7B;YACD,WAAW,EAAE;gBACX,KAAK,EAAE,WAAW;aACnB;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/webpack/extract/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK3D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,YAAmC,EAAkB,EAAE;IACpF,MAAM,aAAa,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC;IAE5C,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC3B,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACnC,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aAC1B;SACF,CAAC;KACH;IAGD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtB,OAAO,GAAG,CAAC;SACZ;QAGD,GAAG,GAAG,GAAG,CAAC,MAAM,CACd,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,kBAAkB;YAErB,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B,CAAC,CAAC,CACJ,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA2C,CAAC,CAAC;IAEhD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAG9B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;QAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAG3C,IAAI,CAAC,MAAM,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,CAAC,EAAE;YACnC,OAAO,GAAG,CAAC;SACZ;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC;QAEzC,WAAW,IAAI,SAAS,CAAC;QACzB,qBAAqB,IAAI,kBAAkB,CAAC;QAC5C,iBAAiB,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAC/C,aAAa,IAAI,SAAS,GAAG,IAAI,CAAC;QAGlC,GAAG,CAAC,cAAc,CAAC,GAAG;YACpB,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACtC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC;SACxC,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA4B,CAAC,CAAC;IAEjC,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO;QACL,OAAO,EAAE;YACP,OAAO;YACP,aAAa,EAAE;gBACb,KAAK,EAAE,aAAa;aACrB;YACD,qBAAqB,EAAE;gBACrB,KAAK,EAAE,qBAAqB;aAC7B;YACD,WAAW,EAAE;gBACX,KAAK,EAAE,WAAW;aACnB;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,73 +1,75 @@
1
1
  import { METRIC_TYPE_FILE_SIZE, METRIC_TYPE_NUMERIC, METRIC_TYPE_PERCENTAGE, } from '../config/metrics';
2
+ import { FILE_TYPE_LABELS } from '../config/file-types';
3
+ import { Metric } from './types';
2
4
  export const metrics = {
3
- totalSizeByTypeALL: {
5
+ [Metric.BUNDLE_SIZE]: {
4
6
  label: 'Bundle Size',
5
7
  description: 'The total size of the assets produced by webpack',
6
8
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
7
9
  type: METRIC_TYPE_FILE_SIZE,
8
10
  },
9
- totalInitialSizeJS: {
11
+ [Metric.INITIAL_SIZE_JS]: {
10
12
  label: 'Initial JS',
11
13
  description: 'The total size of JavaScript initial chunks',
12
14
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
13
15
  type: METRIC_TYPE_FILE_SIZE,
14
16
  },
15
- totalInitialSizeCSS: {
17
+ [Metric.INITIAL_SIZE_CSS]: {
16
18
  label: 'Initial CSS',
17
19
  description: 'The total size of CSS initial chunks',
18
20
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
19
21
  type: METRIC_TYPE_FILE_SIZE,
20
22
  },
21
- cacheInvalidation: {
23
+ [Metric.CACHE_INVALIDATION]: {
22
24
  label: 'Cache Invalidation',
23
25
  description: 'The ratio between the total changed assets and total assets size(Bundle Size)',
24
26
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
25
27
  type: METRIC_TYPE_PERCENTAGE,
26
28
  biggerIsBetter: false,
27
29
  },
28
- chunkCount: {
30
+ [Metric.CHUNK_COUNT]: {
29
31
  label: 'Chunks',
30
32
  description: 'The total number of chunks',
31
33
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
32
34
  type: METRIC_TYPE_NUMERIC,
33
35
  biggerIsBetter: false,
34
36
  },
35
- assetCount: {
37
+ [Metric.ASSET_COUNT]: {
36
38
  label: 'Assets',
37
39
  description: 'Total number of assets',
38
40
  url: 'https://relative-ci.com/documentation/metrics-and-data#assets',
39
41
  type: METRIC_TYPE_NUMERIC,
40
42
  biggerIsBetter: false,
41
43
  },
42
- moduleCount: {
44
+ [Metric.MODULE_COUNT]: {
43
45
  label: 'Modules',
44
46
  description: 'The total number of modules bundled by webpack',
45
47
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
46
48
  type: METRIC_TYPE_NUMERIC,
47
49
  biggerIsBetter: false,
48
50
  },
49
- duplicateModulesCount: {
51
+ [Metric.DUPLICATE_MODULES_COUNT]: {
50
52
  label: 'Duplicate Modules',
51
53
  description: 'The total number of modules that belong to more than one chunk',
52
54
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
53
55
  type: METRIC_TYPE_NUMERIC,
54
56
  biggerIsBetter: false,
55
57
  },
56
- duplicateCode: {
58
+ [Metric.DUPLICATE_CODE]: {
57
59
  label: 'Duplicate Code',
58
60
  description: 'The percentage of total duplicate module size from the total module size',
59
61
  url: 'https://relative-ci.com/documentation/metrics-and-data#modules-1',
60
62
  type: METRIC_TYPE_PERCENTAGE,
61
63
  biggerIsBetter: false,
62
64
  },
63
- packageCount: {
65
+ [Metric.PACKAGE_COUNT]: {
64
66
  label: 'Packages',
65
67
  description: 'The total number of packages bundled by webpack',
66
68
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
67
69
  type: METRIC_TYPE_NUMERIC,
68
70
  biggerIsBetter: false,
69
71
  },
70
- duplicatePackagesCount: {
72
+ [Metric.DUPLICATE_PACKAGES_COUNT]: {
71
73
  label: 'Duplicate Packages',
72
74
  description: 'The total number of duplicate packages',
73
75
  url: 'https://relative-ci.com/documentation/metrics-and-data#packages',
@@ -75,32 +77,32 @@ export const metrics = {
75
77
  biggerIsBetter: false,
76
78
  },
77
79
  sizes: {
78
- totalSizeByTypeJS: {
79
- label: 'JS',
80
+ [Metric.TOTAL_SIZE_JS]: {
81
+ label: FILE_TYPE_LABELS.JS,
80
82
  type: METRIC_TYPE_FILE_SIZE,
81
83
  },
82
- totalSizeByTypeCSS: {
83
- label: 'CSS',
84
+ [Metric.TOTAL_SIZE_CSS]: {
85
+ label: FILE_TYPE_LABELS.CSS,
84
86
  type: METRIC_TYPE_FILE_SIZE,
85
87
  },
86
- totalSizeByTypeIMG: {
87
- label: 'IMG',
88
+ [Metric.TOTAL_SIZE_IMG]: {
89
+ label: FILE_TYPE_LABELS.IMG,
88
90
  type: METRIC_TYPE_FILE_SIZE,
89
91
  },
90
- totalSizeByTypeMEDIA: {
91
- label: 'Media',
92
+ [Metric.TOTAL_SIZE_MEDIA]: {
93
+ label: FILE_TYPE_LABELS.MEDIA,
92
94
  type: METRIC_TYPE_FILE_SIZE,
93
95
  },
94
- totalSizeByTypeFONT: {
95
- label: 'Fonts',
96
+ [Metric.TOTAL_SIZE_FONT]: {
97
+ label: FILE_TYPE_LABELS.FONT,
96
98
  type: METRIC_TYPE_FILE_SIZE,
97
99
  },
98
- totalSizeByTypeHTML: {
99
- label: 'HTML',
100
+ [Metric.TOTAL_SIZE_HTML]: {
101
+ label: FILE_TYPE_LABELS.HTML,
100
102
  type: METRIC_TYPE_FILE_SIZE,
101
103
  },
102
- totalSizeByTypeOTHER: {
103
- label: 'Other',
104
+ [Metric.TOTAL_SIZE_OTHER]: {
105
+ label: FILE_TYPE_LABELS.OTHER,
104
106
  type: METRIC_TYPE_FILE_SIZE,
105
107
  },
106
108
  },
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,kBAAkB,EAAE;QAClB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,kDAAkD;QAC/D,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,6CAA6C;QAC1D,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,qBAAqB;KAC5B;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,+EAA+E;QAC5F,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,4BAA4B;QACzC,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,wBAAwB;QACrC,GAAG,EAAE,+DAA+D;QACpE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,gDAAgD;QAC7D,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,gEAAgE;QAC7E,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,0EAA0E;QACvF,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,KAAK;KACtB;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iDAAiD;QAC9D,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,wCAAwC;QACrD,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,mBAAmB;QACzB,cAAc,EAAE,KAAK;KACtB;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE;YACjB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,qBAAqB;SAC5B;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,qBAAqB;SAC5B;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,qBAAqB;SAC5B;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,qBAAqB;SAC5B;QACD,oBAAoB,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,qBAAqB;SAC5B;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/webpack/metrics.js"],"names":[],"mappings":"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"}
@@ -1,2 +1,24 @@
1
- export {};
1
+ export const METRIC_TOTALS_SUFIX_ALL = 'ALL';
2
+ export const METRIC_TOTALS_PREFIX = 'totalSizeByType';
3
+ export var Metric;
4
+ (function (Metric) {
5
+ Metric["BUNDLE_SIZE"] = "totalSizeByTypeALL";
6
+ Metric["INITIAL_SIZE_JS"] = "totalInitialSizeJS";
7
+ Metric["INITIAL_SIZE_CSS"] = "totalInitialSizeCSS";
8
+ Metric["CACHE_INVALIDATION"] = "cacheInvalidation";
9
+ Metric["ASSET_COUNT"] = "assetCount";
10
+ Metric["CHUNK_COUNT"] = "chunkCount";
11
+ Metric["MODULE_COUNT"] = "moduleCount";
12
+ Metric["DUPLICATE_MODULES_COUNT"] = "duplicateModulesCount";
13
+ Metric["DUPLICATE_CODE"] = "duplicateCode";
14
+ Metric["PACKAGE_COUNT"] = "packageCount";
15
+ Metric["DUPLICATE_PACKAGES_COUNT"] = "duplicatePackagesCount";
16
+ Metric["TOTAL_SIZE_JS"] = "totalSizeByTypeJS";
17
+ Metric["TOTAL_SIZE_CSS"] = "totalSizeByTypeCSS";
18
+ Metric["TOTAL_SIZE_IMG"] = "totalSizeByTypeIMG";
19
+ Metric["TOTAL_SIZE_MEDIA"] = "totalSizeByTypeMEDIA";
20
+ Metric["TOTAL_SIZE_FONT"] = "totalSizeByTypeFONT";
21
+ Metric["TOTAL_SIZE_HTML"] = "totalSizeByTypeHTML";
22
+ Metric["TOTAL_SIZE_OTHER"] = "totalSizeByTypeOTHER";
23
+ })(Metric || (Metric = {}));
2
24
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webpack/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webpack/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,MAAM,CAAN,IAAY,MAmBX;AAnBD,WAAY,MAAM;IAChB,4CAAkC,CAAA;IAClC,gDAAsC,CAAA;IACtC,kDAAwC,CAAA;IACxC,kDAAwC,CAAA;IACxC,oCAA0B,CAAA;IAC1B,oCAA0B,CAAA;IAC1B,sCAA4B,CAAA;IAC5B,2DAAiD,CAAA;IACjD,0CAAgC,CAAA;IAChC,wCAA8B,CAAA;IAC9B,6DAAmD,CAAA;IACnD,6CAAmC,CAAA;IACnC,+CAAqC,CAAA;IACrC,+CAAqC,CAAA;IACrC,mDAAyC,CAAA;IACzC,iDAAuC,CAAA;IACvC,iDAAuC,CAAA;IACvC,mDAAyC,CAAA;AAC3C,CAAC,EAnBW,MAAM,KAAN,MAAM,QAmBjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/utils",
3
- "version": "4.2.0-beta.1",
3
+ "version": "4.3.0-beta.0",
4
4
  "description": "BundleStats utils",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -35,27 +35,28 @@
35
35
  },
36
36
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/utils#readme",
37
37
  "dependencies": {
38
- "@bundle-stats/plugin-webpack-filter": "^4.2.0-beta.1",
39
- "@bundle-stats/plugin-webpack-validate": "^4.2.0-beta.1",
40
- "query-string": "^7.1.0",
41
- "serialize-query-params": "^2.0.1"
38
+ "@bundle-stats/plugin-webpack-filter": "^4.3.0-beta.0",
39
+ "@bundle-stats/plugin-webpack-validate": "^4.3.0-beta.0",
40
+ "query-string": "7.1.3",
41
+ "serialize-query-params": "2.0.2",
42
+ "use-query-params": "2.1.2"
42
43
  },
43
44
  "devDependencies": {
44
- "@types/jest": "29.2.4",
45
+ "@types/jest": "29.2.6",
45
46
  "@types/lodash": "4.14.191",
46
- "core-js": "3.26.1",
47
+ "core-js": "3.27.2",
47
48
  "jest": "29.3.1",
48
49
  "jest-cli": "29.3.1",
49
50
  "jest-date-mock": "1.0.8",
50
51
  "lodash": "4.17.21",
51
52
  "regenerator-runtime": "0.13.11",
52
- "rimraf": "3.0.2",
53
- "ts-jest": "29.0.3",
53
+ "rimraf": "4.1.1",
54
+ "ts-jest": "29.0.5",
54
55
  "typescript": "4.9.4"
55
56
  },
56
57
  "peerDependencies": {
57
58
  "core-js": "^3.0.0",
58
59
  "lodash": "^4.0.0"
59
60
  },
60
- "gitHead": "c69fdcf2c8b40118710b49cfa973e820e4880242"
61
+ "gitHead": "0dee5190df0098690d34ee9da7f471058fe8deed"
61
62
  }
@@ -0,0 +1,5 @@
1
+ export enum InsightType {
2
+ ERROR = 'ERROR',
3
+ INFO = 'INFO',
4
+ WARNING = 'WARNING',
5
+ }
package/src/constants.ts CHANGED
@@ -1,9 +1,11 @@
1
+ export type SourceData = Record<string, unknown>;
2
+
1
3
  export enum MetricTypeType {
2
- 'METRIC_TYPE_NUMERIC',
3
- 'METRIC_TYPE_SCORE',
4
- 'METRIC_TYPE_FILE_SIZE',
5
- 'METRIC_TYPE_DURATION',
6
- 'METRIC_TYPE_PERCENTAGE'
4
+ 'METRIC_TYPE_NUMERIC' = 'METRIC_TYPE_NUMERIC',
5
+ 'METRIC_TYPE_SCORE' = 'METRIC_TYPE_SCORE',
6
+ 'METRIC_TYPE_FILE_SIZE' = 'METRIC_TYPE_FILE_SIZE',
7
+ 'METRIC_TYPE_DURATION' = 'METRIC_TYPE_DURATION',
8
+ 'METRIC_TYPE_PERCENTAGE' = 'METRIC_TYPE_PERCENTAGE',
7
9
  }
8
10
 
9
11
  export interface MetricTypeConfig {
@@ -18,13 +20,13 @@ export interface MetricType extends MetricTypeConfig {
18
20
  }
19
21
 
20
22
  export enum MetricRunInfoDeltaType {
21
- 'HIGH_NEGATIVE',
22
- 'NEGATIVE',
23
- 'LOW_NEGATIVE',
24
- 'NO_CHANGE',
25
- 'LOW_POSITIVE',
26
- 'POSITIVE',
27
- 'HIGH_POSITIVE',
23
+ 'HIGH_NEGATIVE' = 'HIGH_NEGATIVE',
24
+ 'NEGATIVE' = 'NEGATIVE',
25
+ 'LOW_NEGATIVE' = 'LOW_NEGATIVE',
26
+ 'NO_CHANGE' = 'NO_CHANGE',
27
+ 'LOW_POSITIVE' = 'LOW_POSITIVE',
28
+ 'POSITIVE' = 'POSITIVE',
29
+ 'HIGH_POSITIVE' = 'HIGH_POSITIVE',
28
30
  }
29
31
 
30
32
  export interface MetricRun {
@@ -35,13 +37,34 @@ export interface MetricRunInfo {
35
37
  value: number;
36
38
  displayValue: string;
37
39
  delta?: number;
40
+ deltaPercentage?: number;
41
+ deltaType?: MetricRunInfoDeltaType;
38
42
  displayDelta?: string;
39
43
  displayDeltaPercentage?: string;
40
- deltaType?: MetricRunInfoDeltaType;
41
44
  }
42
45
 
43
- export interface Metric {
44
- value: number;
46
+ export interface JobSummaryItem {
47
+ baseline: number;
48
+ current: number;
49
+ }
50
+ export type JobSummarySource = Record<string, JobSummaryItem>;
51
+ export type JobSummary = Record<string, JobSummarySource>;
52
+
53
+ export type JobMetricsSource = Record<string, MetricRun | Record<string, MetricRun>>;
54
+ export type JobMetrics = Record<string, JobMetricsSource>;
55
+
56
+ export interface JobData {
57
+ meta?: any;
58
+ insights?: any;
59
+ summary?: JobSummary;
60
+ metrics?: JobMetrics;
61
+ rawData?: any;
62
+ }
63
+
64
+ export interface Job extends JobData {
65
+ internalBuildNumber: number;
66
+ // @TODO(v5): Remove or move to report
67
+ label: string;
45
68
  }
46
69
 
47
70
  export interface LighthouseSource {
package/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './browsertime';
2
2
  export * from './config';
3
3
  // export * as I18N from './i18n';
4
+ export * from './constants';
4
5
  export * from './jobs';
5
6
  export * from './report';
6
7
  export * from './utils';
@@ -0,0 +1,62 @@
1
+ import merge from 'lodash/merge';
2
+
3
+ import { SOURCE_PATHS } from '../config';
4
+ import { createSummary } from './create-summary';
5
+ import * as webpack from '../webpack';
6
+ import * as lighthouse from '../lighthouse';
7
+ import * as browsertime from '../browsertime';
8
+ import { JobData, JobMetricsSource, SourceData } from '../constants';
9
+
10
+ interface SourceResult {
11
+ meta: {};
12
+ insights: {};
13
+ metrics: JobMetricsSource;
14
+ }
15
+
16
+ interface SourceModule {
17
+ SUMMARY_METRIC_PATHS: Array<string>;
18
+ extract: (rawData: any, balien: any) => any;
19
+ }
20
+
21
+ const SOURCE_MODULES: Record<string, SourceModule> = { webpack, lighthouse, browsertime };
22
+
23
+ export const createJob = (source: SourceData, baseline?: JobData): JobData =>
24
+ SOURCE_PATHS.reduce((agg, sourcePath) => {
25
+ const rawData = source[sourcePath];
26
+
27
+ if (!rawData) {
28
+ return agg;
29
+ }
30
+
31
+ const sourceModule = SOURCE_MODULES[sourcePath];
32
+
33
+ if (!sourceModule) {
34
+ return agg;
35
+ }
36
+
37
+ const extractedData: SourceResult = sourceModule.extract(rawData, baseline);
38
+
39
+ const summary = createSummary(
40
+ SOURCE_MODULES[sourcePath].SUMMARY_METRIC_PATHS,
41
+ baseline?.metrics?.[sourcePath],
42
+ extractedData?.metrics,
43
+ );
44
+
45
+ return merge({}, agg, {
46
+ meta: {
47
+ [sourcePath]: extractedData.meta,
48
+ },
49
+ insights: {
50
+ [sourcePath]: extractedData.insights,
51
+ },
52
+ summary: {
53
+ [sourcePath]: summary,
54
+ },
55
+ metrics: {
56
+ [sourcePath]: extractedData.metrics,
57
+ },
58
+ rawData: {
59
+ [sourcePath]: rawData,
60
+ },
61
+ });
62
+ }, {});
@@ -0,0 +1,28 @@
1
+ import { createJob } from './create-job';
2
+ import { Job, SourceData } from '../constants';
3
+
4
+ /*
5
+ * Create jobs from sources ([current, ..., baseline])
6
+ */
7
+ export const createJobs = (sources: Array<SourceData>): Array<Job> => {
8
+ const jobs = [] as Array<Job>;
9
+
10
+ for (let i = sources.length - 1; i >= 0; i -= 1) {
11
+ const source = sources[i];
12
+ const baseline = jobs.length > 0 ? jobs[jobs.length - 1] : undefined;
13
+ const jobData = createJob(source, baseline);
14
+
15
+ const internalBuildNumber = sources.length - i;
16
+ const label = `Job #${internalBuildNumber}`;
17
+
18
+ const job = {
19
+ ...jobData,
20
+ internalBuildNumber,
21
+ label,
22
+ };
23
+
24
+ jobs.unshift(job);
25
+ }
26
+
27
+ return jobs;
28
+ };
@@ -0,0 +1,22 @@
1
+ import get from 'lodash/get';
2
+
3
+ import { JobMetricsSource, JobSummaryItem } from '../constants';
4
+
5
+ type JobSummary = Record<string, JobSummaryItem>;
6
+
7
+ export const createSummary = (
8
+ metricPaths: Array<string>,
9
+ baselineMetricsSource: JobMetricsSource | null | undefined,
10
+ currentMetricsSource: JobMetricsSource,
11
+ ): JobSummary => {
12
+ const result: JobSummary = {};
13
+
14
+ metricPaths.forEach((metric) => {
15
+ result[metric] = {
16
+ baseline: get(baselineMetricsSource, `${metric}.value`, 0) as number,
17
+ current: get(currentMetricsSource, `${metric}.value`, 0) as number,
18
+ };
19
+ });
20
+
21
+ return result;
22
+ };
File without changes
@@ -4,7 +4,7 @@ import pick from 'lodash/pick';
4
4
  * Filter Lightouse source file
5
5
  *
6
6
  * @param {Object} source
7
- * @return {import('../../types').LighthouseSource}
7
+ * @return {import('../constants').LighthouseSource}
8
8
  */
9
9
  export const filter = (source) => {
10
10
  // filter meta data
@@ -20,10 +20,13 @@ export const filter = (source) => {
20
20
  );
21
21
 
22
22
  // filter audits
23
- const audits = Object.entries(source.audits).reduce((agg, [auditId, auditData]) => ({
24
- ...agg,
25
- [auditId]: pick(auditData, ['score', 'numericValue']),
26
- }), {});
23
+ const audits = Object.entries(source.audits).reduce(
24
+ (agg, [auditId, auditData]) => ({
25
+ ...agg,
26
+ [auditId]: pick(auditData, ['score', 'numericValue']),
27
+ }),
28
+ {},
29
+ );
27
30
 
28
31
  return {
29
32
  ...meta,