function replaceBefore( str, search, replacement ) {
	if ( !isString( str ) ) {
		throw new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );
	}
	if ( !isString( search ) ) {
		throw new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );
	}
	if ( !isString( replacement ) ) {
		throw new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', replacement ) );
	}
	return base( str, search, replacement, 0 );
}
Replaces the substring before the first occurrence of a specified search string.

@param {string} str - input string
@param {string} search - search string
@param {string} replacement - replacement string
@throws {TypeError} first argument must be a string
@throws {TypeError} second argument must be a string
@throws {TypeError} third argument must be a string
@returns {string} output string

@example
var out = replaceBefore( 'beep boop', ' ', 'foo' );
// returns 'foo boop'

@example
var out = replaceBefore( 'beep boop', 'p', 'foo' );
// returns 'foop boop'

@example
var out = replaceBefore( 'Hello World!', '', 'foo' );
// returns 'Hello World!'

@example
var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );
// returns 'Hello World!'