in harness/curl.js [766:807]
fixArgs: function (args) {
// resolve args
// valid combinations for define:
// (string, array, object|function) sax|saf
// (array, object|function) ax|af
// (string, object|function) sx|sf
// (object|function) x|f
var id, deps, defFunc, defFuncArity, len, cjs;
len = args.length;
defFunc = args[len - 1];
defFuncArity = isType(defFunc, 'Function') ? defFunc.length : -1;
if (len == 2) {
if (isType(args[0], 'Array')) {
deps = args[0];
}
else {
id = args[0];
}
}
else if (len == 3) {
id = args[0];
deps = args[1];
}
// Hybrid format: assume that a definition function with zero
// dependencies and non-zero arity is a wrapped CommonJS module
if (!deps && defFuncArity > 0) {
cjs = true;
deps = ['require', 'exports', 'module'].slice(0, defFuncArity).concat(core.extractCjsDeps(defFunc));
}
return {
id: id,
deps: deps || [],
res: defFuncArity >= 0 ? defFunc : function () { return defFunc; },
cjs: cjs
};
},