"use strict"; const { validateArguments } = require("@validatem/core"); const required = require("@validatem/required"); const isFunction = require("@validatem/is-function"); const EndOfStream = require("@promistream/end-of-stream"); const simpleSource = require("@promistream/simple-source"); module.exports = function createStreamFromLazyValue(_valueGenerator) { let [ valueGenerator ] = validateArguments(arguments, { valueGenerator: [ required, isFunction ] }); let wasValueRead = false; return simpleSource(() => { if (wasValueRead === false) { wasValueRead = true; return valueGenerator(); } else { throw new EndOfStream("Value was read"); } }); };