wangzhibo
2026-05-09 53418655c061ac26f66058253f39200aced1ab1d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"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()
}