cake-chai
Version:
Use chai assertians in mocha tasks.
111 lines (109 loc) • 2.84 kB
JavaScript
// Generated by CoffeeScript 1.10.0
module.exports = String(function(fn, args) {
var done, err, error, evalAsync, evalGenerator, evalSync, ipc, isAsync, isGenerator, isPromise, isString, log, response, sliced, waitForPromise;
log = console.log;
ipc = __nightmare.ipc;
sliced = __nightmare.sliced;
console.log = function() {
log.apply(console, arguments);
return ipc.send('log', (sliced(arguments)).map(String));
};
done = function(err, response) {
var errmsg, error;
if (err) {
errmsg = Object.assign({}, err);
errmsg.message = err.message;
errmsg.name = err.name;
errmsg.stack = err.stack;
ipc.send('error', JSON.stringify(errmsg));
} else {
try {
response = JSON.stringify(response);
} catch (error) {
err = error;
response = JSON.stringify({
error: 'Failed to serialize response'
});
}
ipc.send('response', response);
}
return console.log = log;
};
isAsync = function(fn) {
return fn.length === args.length + 1;
};
isGenerator = function(fn) {
return typeof fn === 'function' && /^function[\s]*\*/.test(fn);
};
isPromise = function(v) {
return typeof (v != null ? v.then : void 0) === 'function';
};
isString = function(s) {
return typeof s === 'string';
};
waitForPromise = function(promise) {
return promise.then(function(value) {
return done(null, value);
})["catch"](function(err) {
return done(err);
});
};
evalAsync = function() {
args.push(function(err, res) {
if (err) {
return done(err);
}
return done(null, res);
});
return fn.apply(null, args);
};
evalGenerator = function() {
var gen, last, next, prev;
gen = fn.apply(null, args);
last = null;
prev = null;
next = function(value) {
var err, error, promise, res;
try {
res = gen.next(value);
} catch (error) {
err = error;
return done(err);
}
prev = last;
last = res.value;
if (isPromise(promise = res.value)) {
return promise.then(function(value) {
return next(value);
})["catch"](function(err) {
return done(err);
});
} else if (!res.done) {
return next(res.value);
} else {
return done(null, last != null ? last : prev);
}
};
return next();
};
evalSync = function() {
return fn.apply(null, args);
};
if (isAsync(fn)) {
return evalAsync();
}
if (isGenerator(fn)) {
return evalGenerator();
}
try {
response = evalSync();
} catch (error) {
err = error;
return done(err);
}
if (isPromise(response)) {
return waitForPromise(response);
}
return done(null, response);
});
//# sourceMappingURL=script.js.map