"use strict"; const { validateArguments } = require("@validatem/core"); const required = require("@validatem/required"); const ValidationError = require("@validatem/error"); const EndOfStream = require("@promistream/end-of-stream"); const simpleSource = require("@promistream/simple-source"); module.exports = function createStreamFromIterable(iterable) { validateArguments(arguments, [ [ "iterable", required, (iterable) => { // FIXME: Move to @validatem/ package if (!(typeof iterable[Symbol.iterator] === "function")) { throw new ValidationError("Must be an iterable (eg. an array)"); } } ] ]); let iterator = iterable[Symbol.iterator](); return simpleSource(() => { let { done, value } = iterator.next(); if (done) { throw new EndOfStream("End of iterable reached"); } else { return value; } }); };