multitude
Version:
Comprehensive streams for push and pull
40 lines (31 loc) • 4.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.operate = operate;
var _Observable = require("../classes/Observable");
var _transform = require("./transform");
var _teardown = require("./teardown");
var _intercept = require("./intercept");
var _typeCore = require("type-core");
function operate(operation, options) {
return (0, _transform.transform)(observable => {
return new _Observable.Observable(obs => {
const response = operation(obs);
if (!_typeCore.TypeGuard.isArray(response)) {
return (0, _intercept.intercept)(observable, obs, response, options);
}
const subscription = (0, _intercept.intercept)(observable, obs, {
start: response[0] || undefined,
next: response[1] || undefined,
error: response[2] || undefined,
complete: response[3] || undefined
}, options);
return () => {
subscription.unsubscribe();
(0, _teardown.teardown)(response[4])();
};
});
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdXNoL3V0aWxzL29wZXJhdGUudHMiXSwibmFtZXMiOlsib3BlcmF0ZSIsIm9wZXJhdGlvbiIsIm9wdGlvbnMiLCJvYnNlcnZhYmxlIiwiT2JzZXJ2YWJsZSIsIm9icyIsInJlc3BvbnNlIiwiVHlwZUd1YXJkIiwiaXNBcnJheSIsInN1YnNjcmlwdGlvbiIsInN0YXJ0IiwidW5kZWZpbmVkIiwibmV4dCIsImVycm9yIiwiY29tcGxldGUiLCJ1bnN1YnNjcmliZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVdPLFNBQVNBLE9BQVQsQ0FDTEMsU0FESyxFQUlMQyxPQUpLLEVBS2lCO0FBQ3RCLFNBQU8sMEJBQVdDLFVBQUQsSUFBZ0I7QUFDL0IsV0FBTyxJQUFJQyxzQkFBSixDQUFnQkMsR0FBRCxJQUFvQztBQUN4RCxZQUFNQyxRQUFRLEdBQUdMLFNBQVMsQ0FBQ0ksR0FBRCxDQUExQjs7QUFFQSxVQUFJLENBQUNFLG9CQUFVQyxPQUFWLENBQWtCRixRQUFsQixDQUFMLEVBQWtDO0FBQ2hDLGVBQU8sMEJBQVVILFVBQVYsRUFBc0JFLEdBQXRCLEVBQTJCQyxRQUEzQixFQUFxQ0osT0FBckMsQ0FBUDtBQUNEOztBQUVELFlBQU1PLFlBQVksR0FBRywwQkFDbkJOLFVBRG1CLEVBRW5CRSxHQUZtQixFQUduQjtBQUNFSyxRQUFBQSxLQUFLLEVBQUVKLFFBQVEsQ0FBQyxDQUFELENBQVIsSUFBZUssU0FEeEI7QUFFRUMsUUFBQUEsSUFBSSxFQUFFTixRQUFRLENBQUMsQ0FBRCxDQUFSLElBQWVLLFNBRnZCO0FBR0VFLFFBQUFBLEtBQUssRUFBRVAsUUFBUSxDQUFDLENBQUQsQ0FBUixJQUFlSyxTQUh4QjtBQUlFRyxRQUFBQSxRQUFRLEVBQUVSLFFBQVEsQ0FBQyxDQUFELENBQVIsSUFBZUs7QUFKM0IsT0FIbUIsRUFTbkJULE9BVG1CLENBQXJCO0FBV0EsYUFBTyxNQUFNO0FBQ1hPLFFBQUFBLFlBQVksQ0FBQ00sV0FBYjtBQUNBLGdDQUFTVCxRQUFRLENBQUMsQ0FBRCxDQUFqQjtBQUNELE9BSEQ7QUFJRCxLQXRCTSxDQUFQO0FBdUJELEdBeEJNLENBQVA7QUF5QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdXNoIH0gZnJvbSAnQGRlZmluaXRpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICcuLi9jbGFzc2VzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnLi90cmFuc2Zvcm0nO1xuaW1wb3J0IHsgdGVhcmRvd24gfSBmcm9tICcuL3RlYXJkb3duJztcbmltcG9ydCB7IGludGVyY2VwdCwgSW50ZXJjZXB0T3B0aW9ucyB9IGZyb20gJy4vaW50ZXJjZXB0JztcbmltcG9ydCB7IEVtcHR5LCBOdWxsYXJ5Rm4sIFVuYXJ5Rm4sIFR5cGVHdWFyZCB9IGZyb20gJ3R5cGUtY29yZSc7XG5cbmV4cG9ydCB0eXBlIE9wZXJhdGVPcHRpb25zID0gSW50ZXJjZXB0T3B0aW9ucztcbmV4cG9ydCB0eXBlIE9wZXJhdGVPYnNlcnZlckxpc3Q8VD4gPSBbXG4gIE51bGxhcnlGbiB8IEVtcHR5LFxuICBVbmFyeUZuPFQ+IHwgRW1wdHksXG4gIFVuYXJ5Rm48RXJyb3I+IHwgRW1wdHksXG4gIE51bGxhcnlGbiB8IEVtcHR5LFxuICBQdXNoLlRlYXJkb3duIHwgRW1wdHlcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVyYXRlPFQsIFUgPSBUPihcbiAgb3BlcmF0aW9uOiAoXG4gICAgb2JzZXJ2ZXI6IFB1c2guU3Vic2NyaXB0aW9uT2JzZXJ2ZXI8VT5cbiAgKSA9PiBQdXNoLk9ic2VydmVyPFQ+IHwgT3BlcmF0ZU9ic2VydmVyTGlzdDxUPixcbiAgb3B0aW9ucz86IE9wZXJhdGVPcHRpb25zXG4pOiBQdXNoLk9wZXJhdGlvbjxULCBVPiB7XG4gIHJldHVybiB0cmFuc2Zvcm0oKG9ic2VydmFibGUpID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9iczogUHVzaC5TdWJzY3JpcHRpb25PYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBvcGVyYXRpb24ob2JzKTtcblxuICAgICAgaWYgKCFUeXBlR3VhcmQuaXNBcnJheShyZXNwb25zZSkpIHtcbiAgICAgICAgcmV0dXJuIGludGVyY2VwdChvYnNlcnZhYmxlLCBvYnMsIHJlc3BvbnNlLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gaW50ZXJjZXB0KFxuICAgICAgICBvYnNlcnZhYmxlLFxuICAgICAgICBvYnMsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGFydDogcmVzcG9uc2VbMF0gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIG5leHQ6IHJlc3BvbnNlWzFdIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBlcnJvcjogcmVzcG9uc2VbMl0gfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbXBsZXRlOiByZXNwb25zZVszXSB8fCB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0ZWFyZG93bihyZXNwb25zZVs0XSkoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
;