in src/ResponseStream.js [36:117]
function writableStreamOnly(inner) {
const fns = [
// stream.Writable
'cork',
'destroy',
'end',
'uncork',
'write',
// EventEmitter
'addListener',
'emit',
'eventNames',
'getMaxListeners',
'listenerCount',
'listeners',
'off',
'on',
'once',
'prependListener',
'prependOnceListener',
'rawListeners',
'removeAllListeners',
'removeListener',
'setMaxListeners',
// AWS
'setContentType',
];
const propsReadWrite = ['destroyed', 'writable', '_onBeforeFirstWrite'];
const propsReadOnly = [
'writableFinished',
'writableObjectMode',
'writableBuffer',
'writableEnded',
'writableNeedDrain',
'writableHighWaterMark',
'writableCorked',
'writableLength',
];
const stream = Object.fromEntries(
fns.map((fn) => {
return [fn, inner[fn].bind(inner)];
}),
);
Object.defineProperties(
stream,
Object.fromEntries(
propsReadWrite.map((prop) => [
prop,
{
get() {
return inner[prop];
},
set(value) {
inner[prop] = value;
},
},
]),
),
);
Object.defineProperties(
stream,
Object.fromEntries(
propsReadOnly.map((prop) => [
prop,
{
get() {
return inner[prop];
},
},
]),
),
);
return stream;
}