'use strict';
							 | 
						|
								
							 | 
						|
								var assert = require('assert');
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * A empty function.
							 | 
						|
								 *
							 | 
						|
								 * @return {Function}
							 | 
						|
								 * @public
							 | 
						|
								 */
							 | 
						|
								exports.noop = function noop() {};
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Get a function parameter's names.
							 | 
						|
								 *
							 | 
						|
								 * @param {Function} func
							 | 
						|
								 * @param {Boolean} [useCache], default is true
							 | 
						|
								 * @return {Array} names
							 | 
						|
								 */
							 | 
						|
								exports.getParamNames = function getParamNames(func, cache) {
							 | 
						|
								  var type = typeof func;
							 | 
						|
								  assert(type === 'function', 'The "func" must be a function. Received type "' + type + '"');
							 | 
						|
								
							 | 
						|
								  cache = cache !== false;
							 | 
						|
								  if (cache && func.__cache_names) {
							 | 
						|
								    return func.__cache_names;
							 | 
						|
								  }
							 | 
						|
								  var str = func.toString();
							 | 
						|
								  var names = str.slice(str.indexOf('(') + 1, str.indexOf(')')).match(/([^\s,]+)/g) || [];
							 | 
						|
								  func.__cache_names = names;
							 | 
						|
								  return names;
							 | 
						|
								};
							 |