Add production dependencies
This commit is contained in:
parent
5a0114f3e2
commit
579ccdc29f
12113 changed files with 978046 additions and 3 deletions
88
node_modules/async-done/index.js
generated
vendored
Normal file
88
node_modules/async-done/index.js
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
'use strict';
|
||||
|
||||
var domain = require('domain');
|
||||
|
||||
var eos = require('end-of-stream');
|
||||
var p = require('process-nextick-args');
|
||||
var once = require('once');
|
||||
var exhaust = require('stream-exhaust');
|
||||
|
||||
var eosConfig = {
|
||||
error: false,
|
||||
};
|
||||
|
||||
function rethrowAsync(err) {
|
||||
process.nextTick(rethrow);
|
||||
|
||||
function rethrow() {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
function tryCatch(fn, args) {
|
||||
try {
|
||||
return fn.apply(null, args);
|
||||
} catch (err) {
|
||||
rethrowAsync(err);
|
||||
}
|
||||
}
|
||||
|
||||
function asyncDone(fn, cb) {
|
||||
cb = once(cb);
|
||||
|
||||
var d = domain.create();
|
||||
d.once('error', onError);
|
||||
var domainBoundFn = d.bind(fn);
|
||||
|
||||
function done() {
|
||||
d.removeListener('error', onError);
|
||||
d.exit();
|
||||
return tryCatch(cb, arguments);
|
||||
}
|
||||
|
||||
function onSuccess(result) {
|
||||
done(null, result);
|
||||
}
|
||||
|
||||
function onError(error) {
|
||||
if (!error) {
|
||||
error = new Error('Promise rejected without Error');
|
||||
}
|
||||
done(error);
|
||||
}
|
||||
|
||||
function asyncRunner() {
|
||||
var result = domainBoundFn(done);
|
||||
|
||||
function onNext(state) {
|
||||
onNext.state = state;
|
||||
}
|
||||
|
||||
function onCompleted() {
|
||||
onSuccess(onNext.state);
|
||||
}
|
||||
|
||||
if (result && typeof result.on === 'function') {
|
||||
// Assume node stream
|
||||
d.add(result);
|
||||
eos(exhaust(result), eosConfig, done);
|
||||
return;
|
||||
}
|
||||
|
||||
if (result && typeof result.subscribe === 'function') {
|
||||
// Assume RxJS observable
|
||||
result.subscribe(onNext, onError, onCompleted);
|
||||
return;
|
||||
}
|
||||
|
||||
if (result && typeof result.then === 'function') {
|
||||
// Assume promise
|
||||
result.then(onSuccess, onError);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
p.nextTick(asyncRunner);
|
||||
}
|
||||
|
||||
module.exports = asyncDone;
|
Loading…
Add table
Add a link
Reference in a new issue