shaka-bundle-size 0.0.10 → 0.0.12

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 (72) hide show
  1. package/dist/BaselineStorage.d.ts +6 -2
  2. package/dist/BaselineStorage.d.ts.map +1 -1
  3. package/dist/BaselineStorage.js +6 -1
  4. package/dist/BaselineStorage.js.map +1 -1
  5. package/dist/SourceMapGenerator.d.ts.map +1 -1
  6. package/dist/SourceMapGenerator.js +3 -1
  7. package/dist/SourceMapGenerator.js.map +1 -1
  8. package/dist/WebpackStatsReader.js +1 -1
  9. package/dist/WebpackStatsReader.js.map +1 -1
  10. package/dist/__tests__/BaselineComparator.test.d.ts +2 -0
  11. package/dist/__tests__/BaselineComparator.test.d.ts.map +1 -0
  12. package/dist/__tests__/BaselineComparator.test.js +269 -0
  13. package/dist/__tests__/BaselineComparator.test.js.map +1 -0
  14. package/dist/__tests__/BaselineStorage.test.d.ts +2 -0
  15. package/dist/__tests__/BaselineStorage.test.d.ts.map +1 -0
  16. package/dist/__tests__/BaselineStorage.test.js +145 -0
  17. package/dist/__tests__/BaselineStorage.test.js.map +1 -0
  18. package/dist/__tests__/BaselineWriter.test.d.ts +2 -0
  19. package/dist/__tests__/BaselineWriter.test.d.ts.map +1 -0
  20. package/dist/__tests__/BaselineWriter.test.js +169 -0
  21. package/dist/__tests__/BaselineWriter.test.js.map +1 -0
  22. package/dist/__tests__/BundleSizeChecker.test.d.ts +2 -0
  23. package/dist/__tests__/BundleSizeChecker.test.d.ts.map +1 -0
  24. package/dist/__tests__/BundleSizeChecker.test.js +276 -0
  25. package/dist/__tests__/BundleSizeChecker.test.js.map +1 -0
  26. package/dist/__tests__/ExtendedStatsGenerator.test.d.ts +2 -0
  27. package/dist/__tests__/ExtendedStatsGenerator.test.d.ts.map +1 -0
  28. package/dist/__tests__/ExtendedStatsGenerator.test.js +118 -0
  29. package/dist/__tests__/ExtendedStatsGenerator.test.js.map +1 -0
  30. package/dist/__tests__/HtmlDiffGenerator.test.d.ts +2 -0
  31. package/dist/__tests__/HtmlDiffGenerator.test.d.ts.map +1 -0
  32. package/dist/__tests__/HtmlDiffGenerator.test.js +283 -0
  33. package/dist/__tests__/HtmlDiffGenerator.test.js.map +1 -0
  34. package/dist/__tests__/RegressionDetector.test.d.ts +2 -0
  35. package/dist/__tests__/RegressionDetector.test.d.ts.map +1 -0
  36. package/dist/__tests__/RegressionDetector.test.js +227 -0
  37. package/dist/__tests__/RegressionDetector.test.js.map +1 -0
  38. package/dist/__tests__/Reporter.test.d.ts +2 -0
  39. package/dist/__tests__/Reporter.test.d.ts.map +1 -0
  40. package/dist/__tests__/Reporter.test.js +359 -0
  41. package/dist/__tests__/Reporter.test.js.map +1 -0
  42. package/dist/__tests__/SizeCalculator.test.d.ts +2 -0
  43. package/dist/__tests__/SizeCalculator.test.d.ts.map +1 -0
  44. package/dist/__tests__/SizeCalculator.test.js +172 -0
  45. package/dist/__tests__/SizeCalculator.test.js.map +1 -0
  46. package/dist/__tests__/SourceMapGenerator.test.d.ts +2 -0
  47. package/dist/__tests__/SourceMapGenerator.test.d.ts.map +1 -0
  48. package/dist/__tests__/SourceMapGenerator.test.js +242 -0
  49. package/dist/__tests__/SourceMapGenerator.test.js.map +1 -0
  50. package/dist/__tests__/WebpackStatsReader.test.d.ts +2 -0
  51. package/dist/__tests__/WebpackStatsReader.test.d.ts.map +1 -0
  52. package/dist/__tests__/WebpackStatsReader.test.js +210 -0
  53. package/dist/__tests__/WebpackStatsReader.test.js.map +1 -0
  54. package/dist/__tests__/colors.test.d.ts +2 -0
  55. package/dist/__tests__/colors.test.d.ts.map +1 -0
  56. package/dist/__tests__/colors.test.js +54 -0
  57. package/dist/__tests__/colors.test.js.map +1 -0
  58. package/dist/__tests__/config.test.d.ts +2 -0
  59. package/dist/__tests__/config.test.d.ts.map +1 -0
  60. package/dist/__tests__/config.test.js +380 -0
  61. package/dist/__tests__/config.test.js.map +1 -0
  62. package/dist/cli.js +29 -16
  63. package/dist/cli.js.map +1 -1
  64. package/dist/config.d.ts +200 -33
  65. package/dist/config.d.ts.map +1 -1
  66. package/dist/config.js +93 -19
  67. package/dist/config.js.map +1 -1
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +6 -1
  71. package/dist/index.js.map +1 -1
  72. package/package.json +7 -2
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const BaselineWriter_1 = require("../BaselineWriter");
39
+ describe('BaselineWriter', () => {
40
+ const tmpDir = path.join(__dirname, 'tmp-baseline-writer');
41
+ afterEach(() => {
42
+ if (fs.existsSync(tmpDir)) {
43
+ fs.rmSync(tmpDir, { recursive: true });
44
+ }
45
+ });
46
+ describe('ensureDirectoryExists', () => {
47
+ it('creates directory if it does not exist', () => {
48
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
49
+ expect(fs.existsSync(tmpDir)).toBe(false);
50
+ writer.ensureDirectoryExists();
51
+ expect(fs.existsSync(tmpDir)).toBe(true);
52
+ });
53
+ it('is idempotent if directory exists', () => {
54
+ fs.mkdirSync(tmpDir, { recursive: true });
55
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
56
+ writer.ensureDirectoryExists();
57
+ expect(fs.existsSync(tmpDir)).toBe(true);
58
+ });
59
+ });
60
+ describe('clearDirectory', () => {
61
+ it('removes and recreates directory', () => {
62
+ fs.mkdirSync(tmpDir, { recursive: true });
63
+ fs.writeFileSync(path.join(tmpDir, 'old.json'), '{}');
64
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
65
+ writer.clearDirectory();
66
+ expect(fs.existsSync(tmpDir)).toBe(true);
67
+ expect(fs.readdirSync(tmpDir)).toHaveLength(0);
68
+ });
69
+ it('creates directory even if it did not exist', () => {
70
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
71
+ writer.clearDirectory();
72
+ expect(fs.existsSync(tmpDir)).toBe(true);
73
+ });
74
+ });
75
+ describe('getFilePath', () => {
76
+ it('joins baselineDir with filename', () => {
77
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: '/some/dir' });
78
+ expect(writer.getFilePath('config.json')).toBe(path.join('/some/dir', 'config.json'));
79
+ });
80
+ });
81
+ describe('formatComponents', () => {
82
+ it('formats and sorts components alphabetically', () => {
83
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
84
+ const sizes = [
85
+ { name: 'Zebra', chunksCount: 1, brotliSizeKb: 10.123, gzipSizeKb: 12.456 },
86
+ { name: 'Alpha', chunksCount: 3, brotliSizeKb: 50.789, gzipSizeKb: 60.012 },
87
+ ];
88
+ const formatted = writer.formatComponents(sizes);
89
+ expect(formatted).toHaveLength(2);
90
+ expect(formatted[0].name).toBe('Alpha');
91
+ expect(formatted[1].name).toBe('Zebra');
92
+ expect(formatted[0].gzipSizeKb).toBe('60.01');
93
+ expect(formatted[0].brotliSizeKb).toBe('50.79');
94
+ expect(formatted[0].chunksCount).toBe(3);
95
+ });
96
+ it('formats sizes to 2 decimal places', () => {
97
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
98
+ const sizes = [
99
+ { name: 'A', chunksCount: 1, brotliSizeKb: 0, gzipSizeKb: 0 },
100
+ ];
101
+ const formatted = writer.formatComponents(sizes);
102
+ expect(formatted[0].gzipSizeKb).toBe('0.00');
103
+ expect(formatted[0].brotliSizeKb).toBe('0.00');
104
+ });
105
+ });
106
+ describe('calculateTotalSize', () => {
107
+ it('sums all gzip sizes', () => {
108
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
109
+ const sizes = [
110
+ { name: 'A', chunksCount: 1, brotliSizeKb: 0, gzipSizeKb: 100.5 },
111
+ { name: 'B', chunksCount: 1, brotliSizeKb: 0, gzipSizeKb: 200.75 },
112
+ ];
113
+ expect(writer.calculateTotalSize(sizes)).toBe('301.25');
114
+ });
115
+ it('returns 0.00 for empty array', () => {
116
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
117
+ expect(writer.calculateTotalSize([])).toBe('0.00');
118
+ });
119
+ });
120
+ describe('createBaselineConfig', () => {
121
+ it('creates a full baseline config', () => {
122
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
123
+ const sizes = [
124
+ { name: 'App', chunksCount: 2, brotliSizeKb: 80, gzipSizeKb: 100 },
125
+ { name: 'Header', chunksCount: 1, brotliSizeKb: 30, gzipSizeKb: 40 },
126
+ ];
127
+ const config = writer.createBaselineConfig(sizes);
128
+ expect(config.loadableComponents).toHaveLength(2);
129
+ expect(config.loadableComponents[0].name).toBe('App'); // alphabetically sorted
130
+ expect(config.totalgzipSizeKb).toBe('140.00');
131
+ });
132
+ });
133
+ describe('writeBaselineFile', () => {
134
+ it('writes a valid JSON config file', () => {
135
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
136
+ const sizes = [
137
+ { name: 'App', chunksCount: 2, brotliSizeKb: 80, gzipSizeKb: 100 },
138
+ ];
139
+ const configPath = writer.writeBaselineFile('config.json', sizes);
140
+ expect(fs.existsSync(configPath)).toBe(true);
141
+ const content = JSON.parse(fs.readFileSync(configPath, 'utf8'));
142
+ expect(content.loadableComponents).toHaveLength(1);
143
+ expect(content.loadableComponents[0].name).toBe('App');
144
+ expect(content.totalgzipSizeKb).toBe('100.00');
145
+ });
146
+ it('creates directory if needed', () => {
147
+ const nestedDir = path.join(tmpDir, 'nested');
148
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: nestedDir });
149
+ const sizes = [];
150
+ writer.writeBaselineFile('config.json', sizes);
151
+ expect(fs.existsSync(nestedDir)).toBe(true);
152
+ });
153
+ it('returns the full path to the written file', () => {
154
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
155
+ const configPath = writer.writeBaselineFile('test.json', []);
156
+ expect(configPath).toBe(path.join(tmpDir, 'test.json'));
157
+ });
158
+ it('writes pretty-printed JSON with trailing newline', () => {
159
+ const writer = new BaselineWriter_1.BaselineWriter({ baselineDir: tmpDir });
160
+ writer.writeBaselineFile('config.json', []);
161
+ const raw = fs.readFileSync(path.join(tmpDir, 'config.json'), 'utf8');
162
+ expect(raw).toContain('\n');
163
+ expect(raw.endsWith('\n')).toBe(true);
164
+ // Check it's indented (pretty-printed)
165
+ expect(raw).toContain(' ');
166
+ });
167
+ });
168
+ });
169
+ //# sourceMappingURL=BaselineWriter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaselineWriter.test.js","sourceRoot":"","sources":["../../src/__tests__/BaselineWriter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BundleSizeChecker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BundleSizeChecker.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/BundleSizeChecker.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const BundleSizeChecker_1 = require("../BundleSizeChecker");
39
+ const Reporter_1 = require("../Reporter");
40
+ const config_1 = require("../config");
41
+ describe('BundleSizeChecker', () => {
42
+ const tmpDir = path.join(__dirname, 'tmp-bundle-checker');
43
+ const bundlesDir = path.join(tmpDir, 'public/packs');
44
+ const baselineDir = path.join(tmpDir, 'baseline');
45
+ function createConfig(overrides = {}) {
46
+ return {
47
+ statsFile: path.join(bundlesDir, 'loadable-stats.json'),
48
+ baselineDir,
49
+ baselineFile: 'config.json',
50
+ bundleNamePrefix: undefined,
51
+ thresholds: config_1.DEFAULT_THRESHOLDS,
52
+ ignoredBundles: [],
53
+ acknowledgedBranchesFilePath: undefined,
54
+ generateSourceMaps: false,
55
+ htmlDiffs: config_1.DEFAULT_HTML_DIFFS,
56
+ storage: { ...config_1.DEFAULT_STORAGE, s3Bucket: 'test-bucket' },
57
+ regressionPolicy: (0, config_1.createDefaultPolicy)(config_1.DEFAULT_THRESHOLDS),
58
+ ...overrides,
59
+ };
60
+ }
61
+ function writeStatsFile(stats) {
62
+ fs.writeFileSync(path.join(bundlesDir, 'loadable-stats.json'), JSON.stringify(stats));
63
+ }
64
+ function writeBaseline(baseline) {
65
+ fs.writeFileSync(path.join(baselineDir, 'config.json'), JSON.stringify(baseline));
66
+ }
67
+ function createCompressedFiles(filename, gzipBytes, brotliBytes) {
68
+ fs.writeFileSync(path.join(bundlesDir, `${filename}.gz`), Buffer.alloc(gzipBytes, 'x'));
69
+ fs.writeFileSync(path.join(bundlesDir, `${filename}.br`), Buffer.alloc(brotliBytes, 'x'));
70
+ }
71
+ beforeEach(() => {
72
+ fs.mkdirSync(bundlesDir, { recursive: true });
73
+ fs.mkdirSync(baselineDir, { recursive: true });
74
+ });
75
+ afterEach(() => {
76
+ if (fs.existsSync(tmpDir)) {
77
+ fs.rmSync(tmpDir, { recursive: true });
78
+ }
79
+ });
80
+ describe('constructor', () => {
81
+ it('creates instance with valid config', () => {
82
+ const config = createConfig();
83
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(config, new Reporter_1.SilentReporter());
84
+ expect(checker).toBeDefined();
85
+ });
86
+ it('throws when statsFile is missing', () => {
87
+ expect(() => new BundleSizeChecker_1.BundleSizeChecker(createConfig({ statsFile: '' }), new Reporter_1.SilentReporter())).toThrow('statsFile is required');
88
+ });
89
+ it('throws when baselineDir is missing', () => {
90
+ expect(() => new BundleSizeChecker_1.BundleSizeChecker(createConfig({ baselineDir: '' }), new Reporter_1.SilentReporter())).toThrow('baselineDir is required');
91
+ });
92
+ it('throws when baselineFile is missing', () => {
93
+ expect(() => new BundleSizeChecker_1.BundleSizeChecker(createConfig({ baselineFile: '' }), new Reporter_1.SilentReporter())).toThrow('baselineFile is required');
94
+ });
95
+ });
96
+ describe('getBaselineDir / getBaselineFile', () => {
97
+ it('returns configured values', () => {
98
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
99
+ expect(checker.getBaselineDir()).toBe(baselineDir);
100
+ expect(checker.getBaselineFile()).toBe('config.json');
101
+ });
102
+ });
103
+ describe('calculateComponentSizes', () => {
104
+ it('calculates sizes for named chunk groups', () => {
105
+ createCompressedFiles('app.js', 10240, 8192);
106
+ createCompressedFiles('header.js', 5120, 4096);
107
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
108
+ const sizes = checker.calculateComponentSizes([
109
+ { name: 'App', assetNames: ['app.js'] },
110
+ { name: 'Header', assetNames: ['header.js'] },
111
+ ], []);
112
+ expect(sizes).toHaveLength(2);
113
+ expect(sizes[0].name).toBe('App');
114
+ expect(sizes[0].gzipSizeKb).toBe(10); // 10240 / 1024
115
+ expect(sizes[0].chunksCount).toBe(1);
116
+ expect(sizes[1].name).toBe('Header');
117
+ });
118
+ it('includes uncategorized chunks when present', () => {
119
+ createCompressedFiles('app.js', 1024, 512);
120
+ createCompressedFiles('runtime.js', 512, 256);
121
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
122
+ const sizes = checker.calculateComponentSizes([{ name: 'App', assetNames: ['app.js'] }], ['runtime.js']);
123
+ expect(sizes).toHaveLength(2);
124
+ expect(sizes[1].name).toBe('uncategorized chunks');
125
+ expect(sizes[1].chunksCount).toBe(1);
126
+ });
127
+ it('skips uncategorized when empty', () => {
128
+ createCompressedFiles('app.js', 1024, 512);
129
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
130
+ const sizes = checker.calculateComponentSizes([{ name: 'App', assetNames: ['app.js'] }], []);
131
+ expect(sizes).toHaveLength(1);
132
+ });
133
+ });
134
+ describe('check', () => {
135
+ it('returns failed result when no baseline exists', () => {
136
+ writeStatsFile({
137
+ namedChunkGroups: {
138
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
139
+ },
140
+ chunks: [{ files: ['app.js'] }],
141
+ });
142
+ createCompressedFiles('app.js', 1024, 512);
143
+ // Remove baseline
144
+ fs.rmSync(baselineDir, { recursive: true });
145
+ fs.mkdirSync(baselineDir, { recursive: true });
146
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
147
+ const result = checker.check();
148
+ expect(result.passed).toBe(false);
149
+ expect(result.regressions).toHaveLength(0);
150
+ });
151
+ it('returns passed result when sizes match baseline', () => {
152
+ writeStatsFile({
153
+ namedChunkGroups: {
154
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
155
+ },
156
+ chunks: [{ files: ['app.js'] }],
157
+ });
158
+ createCompressedFiles('app.js', 102400, 81920);
159
+ writeBaseline({
160
+ loadableComponents: [
161
+ { name: 'App', chunksCount: 1, gzipSizeKb: '100.00', brotliSizeKb: '80.00' },
162
+ ],
163
+ totalgzipSizeKb: '100.00',
164
+ });
165
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
166
+ const result = checker.check();
167
+ expect(result.passed).toBe(true);
168
+ expect(result.regressions).toHaveLength(0);
169
+ });
170
+ it('detects regressions when sizes increase beyond threshold', () => {
171
+ writeStatsFile({
172
+ namedChunkGroups: {
173
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
174
+ },
175
+ chunks: [{ files: ['app.js'] }],
176
+ });
177
+ // 120KB gzip (increase of 20KB from 100KB baseline)
178
+ createCompressedFiles('app.js', 122880, 81920);
179
+ writeBaseline({
180
+ loadableComponents: [
181
+ { name: 'App', chunksCount: 1, gzipSizeKb: '100.00', brotliSizeKb: '80.00' },
182
+ ],
183
+ totalgzipSizeKb: '100.00',
184
+ });
185
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
186
+ const result = checker.check();
187
+ expect(result.passed).toBe(false);
188
+ expect(result.regressions.length).toBeGreaterThan(0);
189
+ });
190
+ it('detects new components', () => {
191
+ writeStatsFile({
192
+ namedChunkGroups: {
193
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
194
+ NewWidget: { name: 'NewWidget', assets: [{ name: 'widget.js' }] },
195
+ },
196
+ chunks: [{ files: ['app.js'] }, { files: ['widget.js'] }],
197
+ });
198
+ createCompressedFiles('app.js', 102400, 81920);
199
+ createCompressedFiles('widget.js', 51200, 40960);
200
+ writeBaseline({
201
+ loadableComponents: [
202
+ { name: 'App', chunksCount: 1, gzipSizeKb: '100.00', brotliSizeKb: '80.00' },
203
+ ],
204
+ totalgzipSizeKb: '100.00',
205
+ });
206
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
207
+ const result = checker.check();
208
+ expect(result.passed).toBe(false);
209
+ });
210
+ it('populates actualSizes and expectedSizes in result', () => {
211
+ writeStatsFile({
212
+ namedChunkGroups: {
213
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
214
+ },
215
+ chunks: [{ files: ['app.js'] }],
216
+ });
217
+ createCompressedFiles('app.js', 102400, 81920);
218
+ writeBaseline({
219
+ loadableComponents: [
220
+ { name: 'App', chunksCount: 1, gzipSizeKb: '100.00', brotliSizeKb: '80.00' },
221
+ ],
222
+ totalgzipSizeKb: '100.00',
223
+ });
224
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
225
+ const result = checker.check();
226
+ expect(result.actualSizes.length).toBeGreaterThan(0);
227
+ expect(result.expectedSizes.length).toBeGreaterThan(0);
228
+ });
229
+ });
230
+ describe('updateBaseline', () => {
231
+ it('writes new baseline file', () => {
232
+ writeStatsFile({
233
+ namedChunkGroups: {
234
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
235
+ },
236
+ chunks: [{ files: ['app.js'] }],
237
+ });
238
+ createCompressedFiles('app.js', 102400, 81920);
239
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
240
+ const result = checker.updateBaseline();
241
+ expect(result.configPath).toBeTruthy();
242
+ expect(fs.existsSync(result.configPath)).toBe(true);
243
+ expect(result.sizes).toHaveLength(1);
244
+ expect(result.sizes[0].name).toBe('App');
245
+ });
246
+ it('returns null sourceMapPath when generateSourceMaps is false', () => {
247
+ writeStatsFile({
248
+ namedChunkGroups: {
249
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
250
+ },
251
+ chunks: [{ files: ['app.js'] }],
252
+ });
253
+ createCompressedFiles('app.js', 1024, 512);
254
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig({ generateSourceMaps: false }), new Reporter_1.SilentReporter());
255
+ const result = checker.updateBaseline();
256
+ expect(result.sourceMapPath).toBeNull();
257
+ });
258
+ });
259
+ describe('generateCurrentStatsTo', () => {
260
+ it('writes current stats to specified directory', () => {
261
+ writeStatsFile({
262
+ namedChunkGroups: {
263
+ App: { name: 'App', assets: [{ name: 'app.js' }] },
264
+ },
265
+ chunks: [{ files: ['app.js'] }],
266
+ });
267
+ createCompressedFiles('app.js', 1024, 512);
268
+ const outputDir = path.join(tmpDir, 'current-output');
269
+ fs.mkdirSync(outputDir, { recursive: true });
270
+ const checker = new BundleSizeChecker_1.BundleSizeChecker(createConfig(), new Reporter_1.SilentReporter());
271
+ const result = checker.generateCurrentStatsTo(outputDir);
272
+ expect(fs.existsSync(result.configPath)).toBe(true);
273
+ });
274
+ });
275
+ });
276
+ //# sourceMappingURL=BundleSizeChecker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BundleSizeChecker.test.js","sourceRoot":"","sources":["../../src/__tests__/BundleSizeChecker.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ExtendedStatsGenerator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtendedStatsGenerator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ExtendedStatsGenerator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const ExtendedStatsGenerator_1 = require("../ExtendedStatsGenerator");
39
+ jest.mock('child_process', () => ({
40
+ execSync: jest.fn(),
41
+ }));
42
+ describe('ExtendedStatsGenerator', () => {
43
+ const tmpDir = path.join(__dirname, 'tmp-extended-stats');
44
+ beforeEach(() => {
45
+ fs.mkdirSync(tmpDir, { recursive: true });
46
+ jest.clearAllMocks();
47
+ });
48
+ afterEach(() => {
49
+ if (fs.existsSync(tmpDir)) {
50
+ fs.rmSync(tmpDir, { recursive: true });
51
+ }
52
+ });
53
+ describe('getWebpackStatsPath', () => {
54
+ it('returns default path without prefix', () => {
55
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: '/bundles' });
56
+ expect(gen.getWebpackStatsPath()).toBe(path.join('/bundles', 'webpack-stats.json'));
57
+ });
58
+ it('returns prefixed path with bundleNamePrefix', () => {
59
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: '/bundles', bundleNamePrefix: 'consumer' });
60
+ expect(gen.getWebpackStatsPath()).toBe(path.join('/bundles', 'consumer-webpack-stats.json'));
61
+ });
62
+ });
63
+ describe('getExtendedStatsPath', () => {
64
+ it('returns default path without prefix', () => {
65
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: '/bundles' });
66
+ expect(gen.getExtendedStatsPath()).toBe(path.join('/bundles', 'bundlesize-extended-stats.json'));
67
+ });
68
+ it('returns prefixed path with bundleNamePrefix', () => {
69
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: '/bundles', bundleNamePrefix: 'consumer' });
70
+ expect(gen.getExtendedStatsPath()).toBe(path.join('/bundles', 'consumer-bundlesize-extended-stats.json'));
71
+ });
72
+ });
73
+ describe('generate', () => {
74
+ it('returns null when webpack stats file does not exist', () => {
75
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: tmpDir });
76
+ const result = gen.generate();
77
+ expect(result).toBeNull();
78
+ });
79
+ it('returns extended stats path on success', () => {
80
+ const { execSync } = require('child_process');
81
+ execSync.mockImplementation(() => '');
82
+ // Create the webpack stats file
83
+ fs.writeFileSync(path.join(tmpDir, 'webpack-stats.json'), '{}');
84
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: tmpDir });
85
+ const result = gen.generate();
86
+ expect(result).toBe(path.join(tmpDir, 'bundlesize-extended-stats.json'));
87
+ });
88
+ it('returns null when execSync throws', () => {
89
+ const { execSync } = require('child_process');
90
+ execSync.mockImplementation(() => { throw new Error('command failed'); });
91
+ fs.writeFileSync(path.join(tmpDir, 'webpack-stats.json'), '{}');
92
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: tmpDir });
93
+ const result = gen.generate();
94
+ expect(result).toBeNull();
95
+ });
96
+ it('uses correct command with bundleNamePrefix', () => {
97
+ const { execSync } = require('child_process');
98
+ execSync.mockImplementation(() => '');
99
+ fs.writeFileSync(path.join(tmpDir, 'consumer-webpack-stats.json'), '{}');
100
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: tmpDir, bundleNamePrefix: 'consumer' });
101
+ gen.generate();
102
+ const webpackStatsPath = path.join(tmpDir, 'consumer-webpack-stats.json');
103
+ const extendedStatsPath = path.join(tmpDir, 'consumer-bundlesize-extended-stats.json');
104
+ expect(execSync).toHaveBeenCalledWith(`yarn webpack-bundle-analyzer -m json -s gzip "${webpackStatsPath}" -r "${extendedStatsPath}"`, { stdio: 'pipe', timeout: 300000 });
105
+ });
106
+ it('uses correct command without bundleNamePrefix', () => {
107
+ const { execSync } = require('child_process');
108
+ execSync.mockImplementation(() => '');
109
+ fs.writeFileSync(path.join(tmpDir, 'webpack-stats.json'), '{}');
110
+ const gen = new ExtendedStatsGenerator_1.ExtendedStatsGenerator({ bundlesDir: tmpDir });
111
+ gen.generate();
112
+ const webpackStatsPath = path.join(tmpDir, 'webpack-stats.json');
113
+ const extendedStatsPath = path.join(tmpDir, 'bundlesize-extended-stats.json');
114
+ expect(execSync).toHaveBeenCalledWith(`yarn webpack-bundle-analyzer -m json -s gzip "${webpackStatsPath}" -r "${extendedStatsPath}"`, { stdio: 'pipe', timeout: 300000 });
115
+ });
116
+ });
117
+ });
118
+ //# sourceMappingURL=ExtendedStatsGenerator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtendedStatsGenerator.test.js","sourceRoot":"","sources":["../../src/__tests__/ExtendedStatsGenerator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HtmlDiffGenerator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlDiffGenerator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/HtmlDiffGenerator.test.ts"],"names":[],"mappings":""}