12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 'use strict';
- var through = require('through2');
- var removeBom = require('remove-bom-buffer');
- var SafeBuffer = require('safe-buffer').Buffer;
- function removeBomStream() {
- var completed = false;
- var buffer = SafeBuffer.alloc(0);
- return through(onChunk, onFlush);
- function removeAndCleanup(data) {
- completed = true;
- buffer = null;
- return removeBom(data);
- }
- function onChunk(data, enc, cb) {
- if (completed) {
- return cb(null, data);
- }
- if (data.length >= 7) {
- return cb(null, removeAndCleanup(data));
- }
- var bufferLength = buffer.length;
- var chunkLength = data.length;
- var totalLength = bufferLength + chunkLength;
- buffer = SafeBuffer.concat([buffer, data], totalLength);
- if (totalLength >= 7) {
- return cb(null, removeAndCleanup(buffer));
- }
- cb();
- }
- function onFlush(cb) {
- if (completed || !buffer) {
- return cb();
- }
- cb(null, removeAndCleanup(buffer));
- }
- }
- module.exports = removeBomStream;
|