UNPKG

multitude

Version:

Comprehensive streams for push and pull

40 lines (31 loc) 4.33 kB
"use strict"; 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