UNPKG

live-set

Version:

Class representing a changing and transformable collection of items.

84 lines (76 loc) 7.88 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = merge; var _ = _interopRequireDefault(require(".")); function merge(liveSets) { return new _.default({ scheduler: liveSets[0] ? liveSets[0].getScheduler() : undefined, read: function read() { var s = new Set(); liveSets.forEach(function (liveSet) { liveSet.values().forEach(function (value) { s.add(value); }); }); return s; }, listen: function listen(setValues, controller) { var initialValues = new Set(); var subs = new Set(); var doneSubscribing = false; liveSets.forEach(function (liveSet) { var sub; liveSet.subscribe({ start: function start(_sub) { sub = _sub; subs.add(sub); liveSet.values().forEach(function (value) { initialValues.add(value); }); }, next: function next(changes) { changes.forEach(function (change) { if (change.type === 'add') { controller.add(change.value); } else if (change.type === 'remove') { controller.remove(change.value); } }); }, error: function error(err) { controller.error(err); }, complete: function complete() { subs.delete(sub); if (doneSubscribing && subs.size === 0) { controller.end(); } } }); }); setValues(initialValues); doneSubscribing = true; if (subs.size === 0) { controller.end(); } return { unsubscribe: function unsubscribe() { subs.forEach(function (sub) { sub.unsubscribe(); }); }, pullChanges: function pullChanges() { subs.forEach(function (sub) { sub.pullChanges(); }); } }; } }); } module.exports = exports.default; module.exports.default = exports.default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tZXJnZS5qcyJdLCJuYW1lcyI6WyJtZXJnZSIsImxpdmVTZXRzIiwiTGl2ZVNldCIsInNjaGVkdWxlciIsImdldFNjaGVkdWxlciIsInVuZGVmaW5lZCIsInJlYWQiLCJzIiwiU2V0IiwiZm9yRWFjaCIsImxpdmVTZXQiLCJ2YWx1ZXMiLCJ2YWx1ZSIsImFkZCIsImxpc3RlbiIsInNldFZhbHVlcyIsImNvbnRyb2xsZXIiLCJpbml0aWFsVmFsdWVzIiwic3VicyIsImRvbmVTdWJzY3JpYmluZyIsInN1YiIsInN1YnNjcmliZSIsInN0YXJ0IiwiX3N1YiIsIm5leHQiLCJjaGFuZ2VzIiwiY2hhbmdlIiwidHlwZSIsInJlbW92ZSIsImVycm9yIiwiZXJyIiwiY29tcGxldGUiLCJkZWxldGUiLCJzaXplIiwiZW5kIiwidW5zdWJzY3JpYmUiLCJwdWxsQ2hhbmdlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBRWUsU0FBU0EsS0FBVCxDQUFrQkMsUUFBbEIsRUFBMkQ7QUFDeEUsU0FBTyxJQUFJQyxTQUFKLENBQVk7QUFDakJDLElBQUFBLFNBQVMsRUFBRUYsUUFBUSxDQUFDLENBQUQsQ0FBUixHQUFjQSxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVlHLFlBQVosRUFBZCxHQUEyQ0MsU0FEckM7QUFFakJDLElBQUFBLElBRmlCLGtCQUVWO0FBQ0wsVUFBTUMsQ0FBQyxHQUFHLElBQUlDLEdBQUosRUFBVjtBQUNBUCxNQUFBQSxRQUFRLENBQUNRLE9BQVQsQ0FBaUIsVUFBQUMsT0FBTyxFQUFJO0FBQzFCQSxRQUFBQSxPQUFPLENBQUNDLE1BQVIsR0FBaUJGLE9BQWpCLENBQXlCLFVBQUFHLEtBQUssRUFBSTtBQUNoQ0wsVUFBQUEsQ0FBQyxDQUFDTSxHQUFGLENBQU1ELEtBQU47QUFDRCxTQUZEO0FBR0QsT0FKRDtBQUtBLGFBQU9MLENBQVA7QUFDRCxLQVZnQjtBQVdqQk8sSUFBQUEsTUFYaUIsa0JBV1ZDLFNBWFUsRUFXQ0MsVUFYRCxFQVdhO0FBQzVCLFVBQU1DLGFBQWEsR0FBRyxJQUFJVCxHQUFKLEVBQXRCO0FBQ0EsVUFBTVUsSUFBSSxHQUFHLElBQUlWLEdBQUosRUFBYjtBQUNBLFVBQUlXLGVBQWUsR0FBRyxLQUF0QjtBQUNBbEIsTUFBQUEsUUFBUSxDQUFDUSxPQUFULENBQWlCLFVBQUFDLE9BQU8sRUFBSTtBQUMxQixZQUFJVSxHQUFKO0FBQ0FWLFFBQUFBLE9BQU8sQ0FBQ1csU0FBUixDQUFrQjtBQUNoQkMsVUFBQUEsS0FEZ0IsaUJBQ1ZDLElBRFUsRUFDSjtBQUNWSCxZQUFBQSxHQUFHLEdBQUdHLElBQU47QUFDQUwsWUFBQUEsSUFBSSxDQUFDTCxHQUFMLENBQVNPLEdBQVQ7QUFDQVYsWUFBQUEsT0FBTyxDQUFDQyxNQUFSLEdBQWlCRixPQUFqQixDQUF5QixVQUFBRyxLQUFLLEVBQUk7QUFDaENLLGNBQUFBLGFBQWEsQ0FBQ0osR0FBZCxDQUFrQkQsS0FBbEI7QUFDRCxhQUZEO0FBR0QsV0FQZTtBQVFoQlksVUFBQUEsSUFSZ0IsZ0JBUVhDLE9BUlcsRUFRRjtBQUNaQSxZQUFBQSxPQUFPLENBQUNoQixPQUFSLENBQWdCLFVBQUFpQixNQUFNLEVBQUk7QUFDeEIsa0JBQUlBLE1BQU0sQ0FBQ0MsSUFBUCxLQUFnQixLQUFwQixFQUEyQjtBQUN6QlgsZ0JBQUFBLFVBQVUsQ0FBQ0gsR0FBWCxDQUFlYSxNQUFNLENBQUNkLEtBQXRCO0FBQ0QsZUFGRCxNQUVPLElBQUljLE1BQU0sQ0FBQ0MsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUNuQ1gsZ0JBQUFBLFVBQVUsQ0FBQ1ksTUFBWCxDQUFrQkYsTUFBTSxDQUFDZCxLQUF6QjtBQUNEO0FBQ0YsYUFORDtBQU9ELFdBaEJlO0FBaUJoQmlCLFVBQUFBLEtBakJnQixpQkFpQlZDLEdBakJVLEVBaUJMO0FBQ1RkLFlBQUFBLFVBQVUsQ0FBQ2EsS0FBWCxDQUFpQkMsR0FBakI7QUFDRCxXQW5CZTtBQW9CaEJDLFVBQUFBLFFBcEJnQixzQkFvQkw7QUFDVGIsWUFBQUEsSUFBSSxDQUFDYyxNQUFMLENBQVlaLEdBQVo7O0FBQ0EsZ0JBQUlELGVBQWUsSUFBSUQsSUFBSSxDQUFDZSxJQUFMLEtBQWMsQ0FBckMsRUFBd0M7QUFDdENqQixjQUFBQSxVQUFVLENBQUNrQixHQUFYO0FBQ0Q7QUFDRjtBQXpCZSxTQUFsQjtBQTJCRCxPQTdCRDtBQStCQW5CLE1BQUFBLFNBQVMsQ0FBQ0UsYUFBRCxDQUFUO0FBRUFFLE1BQUFBLGVBQWUsR0FBRyxJQUFsQjs7QUFDQSxVQUFJRCxJQUFJLENBQUNlLElBQUwsS0FBYyxDQUFsQixFQUFxQjtBQUNuQmpCLFFBQUFBLFVBQVUsQ0FBQ2tCLEdBQVg7QUFDRDs7QUFDRCxhQUFPO0FBQ0xDLFFBQUFBLFdBREsseUJBQ1M7QUFDWmpCLFVBQUFBLElBQUksQ0FBQ1QsT0FBTCxDQUFhLFVBQUFXLEdBQUcsRUFBSTtBQUNsQkEsWUFBQUEsR0FBRyxDQUFDZSxXQUFKO0FBQ0QsV0FGRDtBQUdELFNBTEk7QUFNTEMsUUFBQUEsV0FOSyx5QkFNUztBQUNabEIsVUFBQUEsSUFBSSxDQUFDVCxPQUFMLENBQWEsVUFBQVcsR0FBRyxFQUFJO0FBQ2xCQSxZQUFBQSxHQUFHLENBQUNnQixXQUFKO0FBQ0QsV0FGRDtBQUdEO0FBVkksT0FBUDtBQVlEO0FBaEVnQixHQUFaLENBQVA7QUFrRUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgTGl2ZVNldCBmcm9tICcuJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2U8VD4obGl2ZVNldHM6IEFycmF5PExpdmVTZXQ8VD4+KTogTGl2ZVNldDxUPiB7XG4gIHJldHVybiBuZXcgTGl2ZVNldCh7XG4gICAgc2NoZWR1bGVyOiBsaXZlU2V0c1swXSA/IGxpdmVTZXRzWzBdLmdldFNjaGVkdWxlcigpIDogdW5kZWZpbmVkLFxuICAgIHJlYWQoKSB7XG4gICAgICBjb25zdCBzID0gbmV3IFNldCgpO1xuICAgICAgbGl2ZVNldHMuZm9yRWFjaChsaXZlU2V0ID0+IHtcbiAgICAgICAgbGl2ZVNldC52YWx1ZXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICBzLmFkZCh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcztcbiAgICB9LFxuICAgIGxpc3RlbihzZXRWYWx1ZXMsIGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSBuZXcgU2V0KCk7XG4gICAgICBjb25zdCBzdWJzID0gbmV3IFNldCgpO1xuICAgICAgbGV0IGRvbmVTdWJzY3JpYmluZyA9IGZhbHNlO1xuICAgICAgbGl2ZVNldHMuZm9yRWFjaChsaXZlU2V0ID0+IHtcbiAgICAgICAgbGV0IHN1YjtcbiAgICAgICAgbGl2ZVNldC5zdWJzY3JpYmUoe1xuICAgICAgICAgIHN0YXJ0KF9zdWIpIHtcbiAgICAgICAgICAgIHN1YiA9IF9zdWI7XG4gICAgICAgICAgICBzdWJzLmFkZChzdWIpO1xuICAgICAgICAgICAgbGl2ZVNldC52YWx1ZXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcy5hZGQodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXh0KGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICBpZiAoY2hhbmdlLnR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5hZGQoY2hhbmdlLnZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UudHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyLnJlbW92ZShjaGFuZ2UudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yKGVycikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcihlcnIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgICBzdWJzLmRlbGV0ZShzdWIpO1xuICAgICAgICAgICAgaWYgKGRvbmVTdWJzY3JpYmluZyAmJiBzdWJzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgY29udHJvbGxlci5lbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKTtcblxuICAgICAgZG9uZVN1YnNjcmliaW5nID0gdHJ1ZTtcbiAgICAgIGlmIChzdWJzLnNpemUgPT09IDApIHtcbiAgICAgICAgY29udHJvbGxlci5lbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICAgIHN1YnMuZm9yRWFjaChzdWIgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHB1bGxDaGFuZ2VzKCkge1xuICAgICAgICAgIHN1YnMuZm9yRWFjaChzdWIgPT4ge1xuICAgICAgICAgICAgc3ViLnB1bGxDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==