Comparing version 1.2.0 to 2.0.0
72
index.js
@@ -7,2 +7,3 @@ 'use strict' | ||
const EMITTED_END = Symbol('emittedEnd') | ||
const CLOSED = Symbol('closed') | ||
const READ = Symbol('read') | ||
@@ -29,59 +30,7 @@ const FLUSH = Symbol('flush') | ||
this[EMITTED_END] = false | ||
this[CLOSED] = false | ||
this.writable = true | ||
this.readable = true | ||
} | ||
get _readableState () { | ||
const self = this | ||
return { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
buffer: self.buffer, | ||
get length () { | ||
return self.buffer.map(n => n.length).reduce((a,b) => a + b, 0) | ||
}, | ||
get pipes () { return self.pipes.toArray() }, | ||
get pipesCount () { return self.pipes.length }, | ||
get flowing () { return self.flowing }, | ||
get ended () { return self[EOF] }, | ||
get endEmitted () { return self.emittedEnd }, | ||
reading: false, | ||
sync: false, | ||
needReadable: true, | ||
readableListening: true, | ||
resumeScheduled: true, | ||
defaultEncoding: 'utf8', | ||
get ranOut () { return self.buffer.length === 0 }, | ||
awaitDrain: 0, | ||
readingMore: false, | ||
get encoding () { return self.encoding } | ||
} | ||
} | ||
get _writableState () { | ||
const self = this | ||
return { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
needDrain: false, | ||
get ending () { return self[EOF] }, | ||
get ended () { return self[EOF] }, | ||
get finished () { return self.emittedEnd }, | ||
decodeStrings: true, | ||
defaultEncoding: 'utf8', | ||
get length () { | ||
return self.buffer.map(n => n.length).reduce((a,b) => a + b, 0) | ||
}, | ||
writing: false, | ||
corked: false, | ||
sync: false, | ||
bufferProcessing: false, | ||
writelen: 0, | ||
bufferedRequest: null, | ||
lastBufferedRequest: null, | ||
pendingcb: 0, | ||
get prefinished () { return self[EOF] }, | ||
errorEmitted: false, | ||
bufferedRequestCount: 0 | ||
} | ||
} | ||
get encoding () { return this[ENCODING] } | ||
@@ -98,5 +47,2 @@ set encoding (enc) { | ||
get writable () { return !this[EOF] } | ||
get readable () { return !this[EMITTED_END] } | ||
write (chunk, encoding, cb) { | ||
@@ -163,2 +109,3 @@ if (this[EOF]) | ||
this[EOF] = true | ||
this.writable = false | ||
if (this.flowing) | ||
@@ -232,3 +179,4 @@ this[MAYBE_EMIT_END]() | ||
this.emit('finish') | ||
this.emit('close') | ||
if (this[CLOSED]) | ||
this.emit('close') | ||
} | ||
@@ -260,2 +208,8 @@ } | ||
this[EMITTED_END] = true | ||
this.readable = false | ||
} else if (ev === 'close') { | ||
this[CLOSED] = true | ||
// don't emit close before 'end' and 'finish' | ||
if (!this[EMITTED_END]) | ||
return | ||
} | ||
@@ -262,0 +216,0 @@ |
{ | ||
"name": "minipass", | ||
"version": "1.2.0", | ||
"version": "2.0.0", | ||
"description": "minimal implementation of a PassThrough stream", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -258,5 +258,23 @@ const MiniPass = require('../') | ||
t.test('fake baroque streams state objects', t => { | ||
const mp = new MiniPass({ encoding: 'utf8' }) | ||
t.test('save close for end', t => { | ||
const mp = new MiniPass() | ||
let ended = false | ||
mp.on('close', _ => { | ||
t.equal(ended, true, 'end before close') | ||
t.end() | ||
}) | ||
mp.on('end', _ => { | ||
t.equal(ended, false, 'only end once') | ||
ended = true | ||
}) | ||
mp.emit('close') | ||
mp.end('foo') | ||
t.equal(ended, false, 'no end until flushed') | ||
mp.resume() | ||
}) | ||
t.test('eos works', t => { | ||
const eos = require('end-of-stream') | ||
const mp = new MiniPass() | ||
@@ -266,123 +284,8 @@ eos(mp, er => { | ||
throw er | ||
t.same(mp._readableState, { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
buffer: mp.buffer, | ||
length: 0, | ||
pipes: [], | ||
pipesCount: 0, | ||
flowing: false, | ||
ended: true, | ||
endEmitted: true, | ||
reading: false, | ||
sync: false, | ||
needReadable: true, | ||
readableListening: true, | ||
resumeScheduled: true, | ||
defaultEncoding: 'utf8', | ||
ranOut: true, | ||
awaitDrain: 0, | ||
readingMore: false, | ||
encoding: 'utf8' | ||
}) | ||
t.end() | ||
}) | ||
t.same(mp._readableState, { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
buffer: mp.buffer, | ||
length: 0, | ||
pipes: [], | ||
pipesCount: 0, | ||
flowing: false, | ||
ended: false, | ||
endEmitted: false, | ||
reading: false, | ||
sync: false, | ||
needReadable: true, | ||
readableListening: true, | ||
resumeScheduled: true, | ||
defaultEncoding: 'utf8', | ||
ranOut: true, | ||
awaitDrain: 0, | ||
readingMore: false, | ||
encoding: 'utf8' | ||
}) | ||
t.same(mp._writableState, { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
needDrain: false, | ||
ending: false, | ||
ended: false, | ||
finished: false, | ||
decodeStrings: true, | ||
defaultEncoding: 'utf8', | ||
length: 0, | ||
writing: false, | ||
corked: false, | ||
sync: false, | ||
bufferProcessing: false, | ||
writelen: 0, | ||
bufferedRequest: null, | ||
lastBufferedRequest: null, | ||
pendingcb: 0, | ||
prefinished: false, | ||
errorEmitted: false, | ||
bufferedRequestCount: 0 | ||
}) | ||
mp.write('hello') | ||
t.same(mp._readableState, { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
buffer: mp.buffer, | ||
length: 5, | ||
pipes: [], | ||
pipesCount: 0, | ||
flowing: false, | ||
ended: false, | ||
endEmitted: false, | ||
reading: false, | ||
sync: false, | ||
needReadable: true, | ||
readableListening: true, | ||
resumeScheduled: true, | ||
defaultEncoding: 'utf8', | ||
ranOut: false, | ||
awaitDrain: 0, | ||
readingMore: false, | ||
encoding: 'utf8' | ||
}) | ||
mp.end() | ||
t.same(mp._writableState, { | ||
objectMode: false, | ||
highWaterMark: Number.MAX_SAFE_INTEGER, | ||
needDrain: false, | ||
ending: true, | ||
ended: true, | ||
finished: false, | ||
decodeStrings: true, | ||
defaultEncoding: 'utf8', | ||
length: 5, | ||
writing: false, | ||
corked: false, | ||
sync: false, | ||
bufferProcessing: false, | ||
writelen: 0, | ||
bufferedRequest: null, | ||
lastBufferedRequest: null, | ||
pendingcb: 0, | ||
prefinished: true, | ||
errorEmitted: false, | ||
bufferedRequestCount: 0 | ||
}) | ||
mp.read() | ||
mp.emit('close') | ||
mp.end('foo') | ||
mp.resume() | ||
}) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
11
16976
542