summaryrefslogtreecommitdiff
path: root/lib/autoInject.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/autoInject.js')
-rw-r--r--lib/autoInject.js13
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);
}
});