ts-stream
Version:
Type-safe object streams with seamless support for backpressure, ending, and error handling
68 lines • 1.78 kB
JavaScript
/**
* Promise-based object stream with seamless support for back-pressure and error
* handling, written in Typescript.
*
* Copyright (C) 2015 Martin Poelstra
* License: MIT
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.delay = exports.track = exports.defer = exports.swallowErrors = exports.noop = void 0;
/**
* Do nothing.
*/
function noop() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
/* no-op */
}
exports.noop = noop;
/**
* Swallow any error that may result from this promise.
* Prevents PossiblyUnhandledExceptionErrors.
*/
function swallowErrors(promise) {
promise.then(undefined, noop);
}
exports.swallowErrors = swallowErrors;
function defer() {
var resolve;
var reject;
var promise = new Promise(function (a, b) {
resolve = a;
reject = b;
});
return { promise: promise, reject: reject, resolve: resolve };
}
exports.defer = defer;
function track(p) {
var tracked = {
isFulfilled: false,
isPending: true,
isRejected: false,
promise: undefined,
};
var trackedPromise = p.then(function (value) {
tracked.isPending = false;
tracked.isFulfilled = true;
tracked.value = value;
return value;
}, function (error) {
tracked.isPending = false;
tracked.isRejected = true;
tracked.reason = error;
throw error;
});
tracked.promise = trackedPromise;
return tracked;
}
exports.track = track;
function delay(duration, t) {
return new Promise(function (resolve) {
setTimeout(function () { return resolve(t); }, duration);
});
}
exports.delay = delay;
//# sourceMappingURL=util.js.map
;