all-in-one smtp+imap with minimal setup
git clone http://git.nthia.dev/nthmail
const { Transform } = require('stream')
module.exports = function (cb) {
let last = [0,0,0]
let buffers = cb ? [] : null
return new Transform({
write(buf, enc, next) {
for (let i = 0; i < buf.length; i++) {
last[2] = last[1]
last[1] = last[0]
last[0] = buf[i]
let found = false
if (last[0] === 0x0a && last[1] === 0x0a) {
this.push(buf.slice(0,i))
this.push(null)
if (buffers) {
buffers.push(buf.slice(0,i))
cb(null, Buffer.concat(buffers))
}
return
} else if (last[0] === 0x0a && last[1] === 0x0d && last[2] === 0x0a) {
this.push(buf.slice(0,i))
this.push(null)
if (buffers) {
buffers.push(buf.slice(0,i))
cb(null, Buffer.concat(buffers))
}
return
}
}
this.push(buf)
if (buffers) buffers.push(buf)
next()
},
finish(next) {
if (buffers) {
cb(null, Buffer.concat(buffers))
}
next()
}
})
}