UNPKG

1.55 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const plugin_error_1 = tslib_1.__importDefault(require("plugin-error"));
5const stream_1 = tslib_1.__importDefault(require("stream"));
6const diagnostics_1 = require("./diagnostics");
7const humanizeByteCount_1 = tslib_1.__importDefault(require("./util/humanizeByteCount"));
8const PLUGIN_NAME = 'validateFileSizes';
9function 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}
33exports.default = validateFileSizes;