|
|
@@ -10,29 +10,29 @@ const { validateOptions } = require("@validatem/core"); |
|
|
|
const required = require("@validatem/required"); |
|
|
|
const isFunction = require("@validatem/is-function"); |
|
|
|
const defaultTo = require("@validatem/default-to"); |
|
|
|
const wrapValueAsOption = require("@validatem/wrap-value-as-option"); |
|
|
|
|
|
|
|
// FIXME: Update other stream implementations to new API |
|
|
|
module.exports = function simpleSinkStream(_options) { |
|
|
|
let { onResult, onEnd, onAbort } = validateOptions(arguments, { |
|
|
|
onResult: [ required, isFunction ], |
|
|
|
onEnd: [ isFunction, defaultTo.literal(defaultOnEnd) ], |
|
|
|
onAbort: [ isFunction, defaultTo.literal(defaultOnAbort) ] |
|
|
|
}); |
|
|
|
let { onResult, onEnd, onAbort } = validateOptions(arguments, [ |
|
|
|
required, |
|
|
|
wrapValueAsOption("onResult"), { |
|
|
|
onResult: [ required, isFunction ], |
|
|
|
onEnd: [ isFunction, defaultTo.literal(function defaultOnEnd() { |
|
|
|
// We return whatever value we got last from the specified onResult callback. |
|
|
|
return lastResult; |
|
|
|
})], |
|
|
|
onAbort: [ isFunction, defaultTo.literal(function defaultOnAbort() { |
|
|
|
// no-op |
|
|
|
})] |
|
|
|
} |
|
|
|
]); |
|
|
|
|
|
|
|
let lastResult; |
|
|
|
let onEndCalled = false; |
|
|
|
let onEndResult; |
|
|
|
let abortHandled = false; |
|
|
|
|
|
|
|
function defaultOnEnd() { |
|
|
|
// We return whatever value we got last from the specified onResult callback. |
|
|
|
return lastResult; |
|
|
|
} |
|
|
|
|
|
|
|
function defaultOnAbort() { |
|
|
|
// no-op |
|
|
|
} |
|
|
|
|
|
|
|
return { |
|
|
|
description: `simple sink stream`, |
|
|
|
abort: propagateAbort, |
|
|
|