2121// MODULES //
2222
2323var isPositive = require ( '@stdlib/assert-is-positive-number' ) . isPrimitive ;
24+ var isPlainObject = require ( '@stdlib/assert-is-plain-object' ) ;
2425var assign = require ( '@stdlib/object-assign' ) ;
26+ var format = require ( '@stdlib/string-format' ) ;
2527var RandomStream = require ( './main.js' ) ;
2628
2729
@@ -42,6 +44,7 @@ var RandomStream = require( './main.js' );
4244* @param {PRNGStateMT19937 } [options.state] - pseudorandom number generator state
4345* @param {boolean } [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state
4446* @param {PositiveInteger } [options.siter] - number of iterations after which to emit the PRNG state
47+ * @throws {TypeError } options argument must be an object
4548* @returns {Function } stream factory
4649*
4750* @example
@@ -68,13 +71,19 @@ function factory( sigma, options ) {
6871
6972 nargs = arguments . length ;
7073 if ( nargs > 1 ) {
74+ if ( ! isPlainObject ( options ) ) {
75+ throw new TypeError ( format ( 'invalid argument. Options argument must be an object. Value: `%s`.' , options ) ) ;
76+ }
7177 fcn = createStream2 ;
7278 opts = assign ( { } , options ) ;
7379 } else if ( nargs === 1 ) {
7480 if ( isPositive ( sigma ) ) {
7581 fcn = createStream2 ;
7682 opts = { } ;
7783 } else {
84+ if ( ! isPlainObject ( sigma ) ) {
85+ throw new TypeError ( format ( 'invalid argument. Options argument must be an object. Value: `%s`.' , sigma ) ) ;
86+ }
7887 opts = assign ( { } , sigma ) ;
7988 fcn = createStream1 ;
8089 }
0 commit comments