UNPKG

1.87 kBJavaScriptView Raw
1'use strict';
2var __importDefault =
3 (this && this.__importDefault) ||
4 function (mod) {
5 return mod && mod.__esModule ? mod : { default: mod };
6 };
7Object.defineProperty(exports, '__esModule', { value: true });
8exports.saveOutputToFile = exports.formatOutput = void 0;
9const os_1 = __importDefault(require('os'));
10const path_1 = __importDefault(require('path'));
11const fs_1 = __importDefault(require('fs'));
12const html_1 = require('./html');
13const app_error_1 = require('./app-error');
14function formatOutput(results, options) {
15 if (!options.output) {
16 return;
17 }
18 switch (options.output.format) {
19 case 'json':
20 return JSON.stringify({ results }, null, ' ');
21 case 'tsv':
22 return outputAsTsv(results);
23 case 'html':
24 return html_1.generateHtml(results, options);
25 }
26}
27exports.formatOutput = formatOutput;
28function outputAsTsv(results) {
29 const lines = ['Source\tSize'];
30 results.forEach((bundle, index) => {
31 if (index > 0) {
32 lines.push('');
33 }
34 Object.entries(bundle.files)
35 .map(([source, data]) => [source, data.size])
36 .sort(sortFilesBySize)
37 .forEach(([source, size]) => {
38 lines.push(`${source}\t${size}`);
39 });
40 });
41 return lines.join(os_1.default.EOL);
42}
43function sortFilesBySize([, aSize], [, bSize]) {
44 return bSize - aSize;
45}
46function saveOutputToFile(result, options) {
47 if (!options.output) {
48 return;
49 }
50 const output = result.output;
51 const filename = options.output.filename;
52 if (output && filename) {
53 try {
54 const dir = path_1.default.dirname(filename);
55 fs_1.default.mkdirSync(dir, { recursive: true });
56 fs_1.default.writeFileSync(filename, output);
57 } catch (error) {
58 throw new app_error_1.AppError({ code: 'CannotSaveFile' }, error);
59 }
60 }
61}
62exports.saveOutputToFile = saveOutputToFile;
63//# sourceMappingURL=output.js.map