UNPKG

multitude

Version:

Comprehensive streams for push and pull

49 lines (42 loc) 4.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.interval = interval; var _Observable = require("../classes/Observable"); var _typeCore = require("type-core"); function interval(every) { const options = !every || _typeCore.TypeGuard.isNumber(every) ? { every } : every; const cancel = options.cancel; const promise = _typeCore.TypeGuard.isPromiseLike(cancel) ? cancel : null; const callback = _typeCore.TypeGuard.isFunction(cancel) ? cancel : null; return new _Observable.Observable(obs => { let index = -1; const interval = setInterval(() => { index++; obs.next(index); if (!callback) return; try { if (callback(index)) { obs.complete(); clearInterval(interval); } } catch (err) { obs.error(err); } }, options.every || 0); if (promise) { promise.then(() => { clearInterval(interval); obs.complete(); }, err => { clearInterval(interval); obs.error(err); }); } return () => clearInterval(interval); }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdXNoL2NyZWF0b3JzL2ludGVydmFsLnRzIl0sIm5hbWVzIjpbImludGVydmFsIiwiZXZlcnkiLCJvcHRpb25zIiwiVHlwZUd1YXJkIiwiaXNOdW1iZXIiLCJjYW5jZWwiLCJwcm9taXNlIiwiaXNQcm9taXNlTGlrZSIsImNhbGxiYWNrIiwiaXNGdW5jdGlvbiIsIk9ic2VydmFibGUiLCJvYnMiLCJpbmRleCIsInNldEludGVydmFsIiwibmV4dCIsImNvbXBsZXRlIiwiY2xlYXJJbnRlcnZhbCIsImVyciIsImVycm9yIiwidGhlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUNBOztBQU9PLFNBQVNBLFFBQVQsQ0FDTEMsS0FESyxFQUVvQjtBQUN6QixRQUFNQyxPQUFPLEdBQUcsQ0FBQ0QsS0FBRCxJQUFVRSxvQkFBVUMsUUFBVixDQUFtQkgsS0FBbkIsQ0FBVixHQUFzQztBQUFFQSxJQUFBQTtBQUFGLEdBQXRDLEdBQWtEQSxLQUFsRTtBQUVBLFFBQU1JLE1BQU0sR0FBR0gsT0FBTyxDQUFDRyxNQUF2QjtBQUNBLFFBQU1DLE9BQU8sR0FBR0gsb0JBQVVJLGFBQVYsQ0FBd0JGLE1BQXhCLElBQWtDQSxNQUFsQyxHQUEyQyxJQUEzRDtBQUNBLFFBQU1HLFFBQVEsR0FBR0wsb0JBQVVNLFVBQVYsQ0FBcUJKLE1BQXJCLElBQStCQSxNQUEvQixHQUF3QyxJQUF6RDtBQUVBLFNBQU8sSUFBSUssc0JBQUosQ0FBZ0JDLEdBQUQsSUFBUztBQUM3QixRQUFJQyxLQUFLLEdBQUcsQ0FBQyxDQUFiO0FBQ0EsVUFBTVosUUFBUSxHQUFHYSxXQUFXLENBQUMsTUFBTTtBQUNqQ0QsTUFBQUEsS0FBSztBQUNMRCxNQUFBQSxHQUFHLENBQUNHLElBQUosQ0FBU0YsS0FBVDtBQUVBLFVBQUksQ0FBQ0osUUFBTCxFQUFlOztBQUNmLFVBQUk7QUFDRixZQUFJQSxRQUFRLENBQUNJLEtBQUQsQ0FBWixFQUFxQjtBQUNuQkQsVUFBQUEsR0FBRyxDQUFDSSxRQUFKO0FBQ0FDLFVBQUFBLGFBQWEsQ0FBQ2hCLFFBQUQsQ0FBYjtBQUNEO0FBQ0YsT0FMRCxDQUtFLE9BQU9pQixHQUFQLEVBQVk7QUFDWk4sUUFBQUEsR0FBRyxDQUFDTyxLQUFKLENBQVVELEdBQVY7QUFDRDtBQUNGLEtBYjJCLEVBYXpCZixPQUFPLENBQUNELEtBQVIsSUFBaUIsQ0FiUSxDQUE1Qjs7QUFlQSxRQUFJSyxPQUFKLEVBQWE7QUFDWEEsTUFBQUEsT0FBTyxDQUFDYSxJQUFSLENBQ0UsTUFBTTtBQUNKSCxRQUFBQSxhQUFhLENBQUNoQixRQUFELENBQWI7QUFDQVcsUUFBQUEsR0FBRyxDQUFDSSxRQUFKO0FBQ0QsT0FKSCxFQUtHRSxHQUFELElBQVM7QUFDUEQsUUFBQUEsYUFBYSxDQUFDaEIsUUFBRCxDQUFiO0FBQ0FXLFFBQUFBLEdBQUcsQ0FBQ08sS0FBSixDQUFVRCxHQUFWO0FBQ0QsT0FSSDtBQVVEOztBQUVELFdBQU8sTUFBTUQsYUFBYSxDQUFDaEIsUUFBRCxDQUExQjtBQUNELEdBL0JNLENBQVA7QUFnQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdXNoIH0gZnJvbSAnQGRlZmluaXRpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICcuLi9jbGFzc2VzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgVW5hcnlGbiwgVHlwZUd1YXJkIH0gZnJvbSAndHlwZS1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcnZhbE9wdGlvbnMge1xuICBldmVyeT86IG51bWJlcjtcbiAgY2FuY2VsPzogVW5hcnlGbjxudW1iZXIsIGJvb2xlYW4+IHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnZhbChcbiAgZXZlcnk/OiBudW1iZXIgfCBJbnRlcnZhbE9wdGlvbnNcbik6IFB1c2guT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9ICFldmVyeSB8fCBUeXBlR3VhcmQuaXNOdW1iZXIoZXZlcnkpID8geyBldmVyeSB9IDogZXZlcnk7XG5cbiAgY29uc3QgY2FuY2VsID0gb3B0aW9ucy5jYW5jZWw7XG4gIGNvbnN0IHByb21pc2UgPSBUeXBlR3VhcmQuaXNQcm9taXNlTGlrZShjYW5jZWwpID8gY2FuY2VsIDogbnVsbDtcbiAgY29uc3QgY2FsbGJhY2sgPSBUeXBlR3VhcmQuaXNGdW5jdGlvbihjYW5jZWwpID8gY2FuY2VsIDogbnVsbDtcblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9icykgPT4ge1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaW5kZXgrKztcbiAgICAgIG9icy5uZXh0KGluZGV4KTtcblxuICAgICAgaWYgKCFjYWxsYmFjaykgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKGluZGV4KSkge1xuICAgICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgb2JzLmVycm9yKGVyciBhcyBFcnJvcik7XG4gICAgICB9XG4gICAgfSwgb3B0aW9ucy5ldmVyeSB8fCAwKTtcblxuICAgIGlmIChwcm9taXNlKSB7XG4gICAgICBwcm9taXNlLnRoZW4oXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICBvYnMuY29tcGxldGUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgIG9icy5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSk7XG59XG4iXX0=