“use strict”;

var BOMChar = 'uFEFF';

exports.PrependBOM = PrependBOMWrapper function PrependBOMWrapper(encoder, options) {

this.encoder = encoder;
this.addBOM = true;

}

PrependBOMWrapper.prototype.write = function(str) {

if (this.addBOM) {
    str = BOMChar + str;
    this.addBOM = false;
}

return this.encoder.write(str);

}

PrependBOMWrapper.prototype.end = function() {

return this.encoder.end();

}

//——————————————————————————

exports.StripBOM = StripBOMWrapper; function StripBOMWrapper(decoder, options) {

this.decoder = decoder;
this.pass = false;
this.options = options || {};

}

StripBOMWrapper.prototype.write = function(buf) {

var res = this.decoder.write(buf);
if (this.pass || !res)
    return res;

if (res[0] === BOMChar) {
    res = res.slice(1);
    if (typeof this.options.stripBOM === 'function')
        this.options.stripBOM();
}

this.pass = true;
return res;

}

StripBOMWrapper.prototype.end = function() {

return this.decoder.end();

}