MCPcopy
hub / github.com/caolan/async / autoInject

Function autoInject

lib/autoInject.js:106–146  ·  view source on GitHub ↗
(tasks, callback)

Source from the content-addressed store, hash-verified

104 * });
105 */
106export default function autoInject(tasks, callback) {
107 var newTasks = {};
108
109 forOwn(tasks, function (taskFn, key) {
110 var params;
111 var fnIsAsync = isAsync(taskFn);
112 var hasNoDeps =
113 (!fnIsAsync && taskFn.length === 1) ||
114 (fnIsAsync && taskFn.length === 0);
115
116 if (isArray(taskFn)) {
117 params = taskFn.slice(0, -1);
118 taskFn = taskFn[taskFn.length - 1];
119
120 newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);
121 } else if (hasNoDeps) {
122 // no dependencies, use the function as-is
123 newTasks[key] = taskFn;
124 } else {
125 params = parseParams(taskFn);
126 if (taskFn.length === 0 && !fnIsAsync && params.length === 0) {
127 throw new Error("autoInject task functions require explicit parameters.");
128 }
129
130 // remove callback param
131 if (!fnIsAsync) params.pop();
132
133 newTasks[key] = params.concat(newTask);
134 }
135
136 function newTask(results, taskCb) {
137 var newArgs = arrayMap(params, function (name) {
138 return results[name];
139 });
140 newArgs.push(taskCb);
141 wrapAsync(taskFn).apply(null, newArgs);
142 }
143 });
144
145 auto(newTasks, callback);
146}

Callers

nothing calls this directly

Calls 2

isAsyncFunction · 0.90
parseParamsFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…