1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const tslib_1 = require("tslib");
|
4 | const plugin_error_1 = tslib_1.__importDefault(require("plugin-error"));
|
5 | const stream_1 = tslib_1.__importDefault(require("stream"));
|
6 | const diagnostics_1 = require("./diagnostics");
|
7 | const humanizeByteCount_1 = tslib_1.__importDefault(require("./util/humanizeByteCount"));
|
8 | const PLUGIN_NAME = 'validateFileSizes';
|
9 | function validateFileSizes({ maxSizes, onDiagnostic, }) {
|
10 | return new stream_1.default.Transform({
|
11 | objectMode: true,
|
12 | transform(file, _, cb) {
|
13 | const expectedMaxSize = maxSizes[file.relative];
|
14 | if (file.isNull() || expectedMaxSize === undefined) {
|
15 | return cb(undefined, file);
|
16 | }
|
17 | if (!file.isBuffer()) {
|
18 | return cb(new plugin_error_1.default(PLUGIN_NAME, `File is not a buffer: ${file.relative}`, {
|
19 | fileName: file.relative,
|
20 | }));
|
21 | }
|
22 | const actualSize = file.contents.byteLength;
|
23 | if (actualSize > expectedMaxSize) {
|
24 | onDiagnostic({
|
25 | category: diagnostics_1.DiagnosticCategory.Error,
|
26 | messageText: `${file.relative} is larger than maximum allowed size. File size was ${humanizeByteCount_1.default(actualSize)}, maximum allowed is ${humanizeByteCount_1.default(expectedMaxSize)}.`,
|
27 | });
|
28 | }
|
29 | return cb(undefined, file);
|
30 | },
|
31 | });
|
32 | }
|
33 | exports.default = validateFileSizes;
|