diff options
Diffstat (limited to 'lib/autoInject.js')
-rw-r--r-- | lib/autoInject.js | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/autoInject.js b/lib/autoInject.js index 1b6fea4..f84a4d9 100644 --- a/lib/autoInject.js +++ b/lib/autoInject.js @@ -1,6 +1,7 @@ import auto from './auto'; import forOwn from 'lodash/forOwn'; import arrayMap from 'lodash/_arrayMap'; +import clone from 'lodash/_baseClone'; import isArray from 'lodash/isArray'; var argsRegex = /^function\s*[^\(]*\(\s*([^\)]*)\)/m; @@ -16,28 +17,28 @@ export default function autoInject(tasks, callback) { var params; if (isArray(taskFn)) { - params = [...taskFn]; + params = clone(taskFn); taskFn = params.pop(); - newTasks[key] = [...params].concat(newTask); + newTasks[key] = clone(params).concat(newTask); } else if (taskFn.length === 0) { throw new Error("autoInject task functions require explicit parameters."); } else if (taskFn.length === 1) { - // no dependencies + // no dependencies, use the function as-is newTasks[key] = taskFn; } else { params = parseParams(taskFn); params.pop(); - newTasks[key] = [...params].concat(newTask); - + newTasks[key] = clone(params).concat(newTask); } function newTask(results, taskCb) { var newArgs = arrayMap(params, function (name) { return results[name]; }); - taskFn(...newArgs.concat(taskCb)); + newArgs.push(taskCb); + taskFn.apply(null, newArgs); } }); |