UNPKG

live-set

Version:

Class representing a changing and transformable collection of items.

73 lines (65 loc) 7.02 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = filter; var _ = _interopRequireDefault(require(".")); /* eslint-disable no-unused-vars, no-redeclare */ /*:: export default filter; */ /*:: ` */ function filter(liveSet, cb) { return new _.default({ scheduler: liveSet.getScheduler(), read: function read() { var ret = new Set(); liveSet.values().forEach(function (value) { if (cb(value)) { ret.add(value); } }); return ret; }, listen: function listen(setValues, controller) { var passedFilter = new Set(); var sub = liveSet.subscribe({ start: function start() { var initialValues = new Set(); liveSet.values().forEach(function (value) { if (cb(value)) { passedFilter.add(value); initialValues.add(value); } }); setValues(initialValues); }, next: function next(changes) { changes.forEach(function (change) { if (change.type === 'add') { if (cb(change.value)) { passedFilter.add(change.value); controller.add(change.value); } } else if (change.type === 'remove') { if (passedFilter.has(change.value)) { passedFilter.delete(change.value); controller.remove(change.value); } } }); }, error: function error(err) { controller.error(err); }, complete: function complete() { controller.end(); } }); return sub; } }); } /*:: ` */ module.exports = exports.default; module.exports.default = exports.default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9maWx0ZXIuanMiXSwibmFtZXMiOlsiZmlsdGVyIiwibGl2ZVNldCIsImNiIiwiTGl2ZVNldCIsInNjaGVkdWxlciIsImdldFNjaGVkdWxlciIsInJlYWQiLCJyZXQiLCJTZXQiLCJ2YWx1ZXMiLCJmb3JFYWNoIiwidmFsdWUiLCJhZGQiLCJsaXN0ZW4iLCJzZXRWYWx1ZXMiLCJjb250cm9sbGVyIiwicGFzc2VkRmlsdGVyIiwic3ViIiwic3Vic2NyaWJlIiwic3RhcnQiLCJpbml0aWFsVmFsdWVzIiwibmV4dCIsImNoYW5nZXMiLCJjaGFuZ2UiLCJ0eXBlIiwiaGFzIiwiZGVsZXRlIiwicmVtb3ZlIiwiZXJyb3IiLCJlcnIiLCJjb21wbGV0ZSIsImVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0E7O0FBRkE7O0FBT0E7O0FBRUE7QUFDZSxTQUFTQSxNQUFULENBQW1CQyxPQUFuQixFQUF3Q0MsRUFBeEMsRUFBMkU7QUFDeEYsU0FBTyxJQUFJQyxTQUFKLENBQVk7QUFDakJDLElBQUFBLFNBQVMsRUFBRUgsT0FBTyxDQUFDSSxZQUFSLEVBRE07QUFFakJDLElBQUFBLElBRmlCLGtCQUVWO0FBQ0wsVUFBTUMsR0FBRyxHQUFHLElBQUlDLEdBQUosRUFBWjtBQUNBUCxNQUFBQSxPQUFPLENBQUNRLE1BQVIsR0FBaUJDLE9BQWpCLENBQXlCLFVBQUFDLEtBQUssRUFBSTtBQUNoQyxZQUFJVCxFQUFFLENBQUNTLEtBQUQsQ0FBTixFQUFlO0FBQ2JKLFVBQUFBLEdBQUcsQ0FBQ0ssR0FBSixDQUFRRCxLQUFSO0FBQ0Q7QUFDRixPQUpEO0FBS0EsYUFBT0osR0FBUDtBQUNELEtBVmdCO0FBV2pCTSxJQUFBQSxNQVhpQixrQkFXVkMsU0FYVSxFQVdDQyxVQVhELEVBV2E7QUFDNUIsVUFBTUMsWUFBWSxHQUFHLElBQUlSLEdBQUosRUFBckI7QUFFQSxVQUFNUyxHQUFHLEdBQUdoQixPQUFPLENBQUNpQixTQUFSLENBQWtCO0FBQzVCQyxRQUFBQSxLQUQ0QixtQkFDcEI7QUFDTixjQUFNQyxhQUFhLEdBQUcsSUFBSVosR0FBSixFQUF0QjtBQUNBUCxVQUFBQSxPQUFPLENBQUNRLE1BQVIsR0FBaUJDLE9BQWpCLENBQXlCLFVBQUFDLEtBQUssRUFBSTtBQUNoQyxnQkFBSVQsRUFBRSxDQUFDUyxLQUFELENBQU4sRUFBZTtBQUNiSyxjQUFBQSxZQUFZLENBQUNKLEdBQWIsQ0FBaUJELEtBQWpCO0FBQ0FTLGNBQUFBLGFBQWEsQ0FBQ1IsR0FBZCxDQUFrQkQsS0FBbEI7QUFDRDtBQUNGLFdBTEQ7QUFNQUcsVUFBQUEsU0FBUyxDQUFDTSxhQUFELENBQVQ7QUFDRCxTQVYyQjtBQVc1QkMsUUFBQUEsSUFYNEIsZ0JBV3ZCQyxPQVh1QixFQVdkO0FBQ1pBLFVBQUFBLE9BQU8sQ0FBQ1osT0FBUixDQUFnQixVQUFBYSxNQUFNLEVBQUk7QUFDeEIsZ0JBQUlBLE1BQU0sQ0FBQ0MsSUFBUCxLQUFnQixLQUFwQixFQUEyQjtBQUN6QixrQkFBSXRCLEVBQUUsQ0FBQ3FCLE1BQU0sQ0FBQ1osS0FBUixDQUFOLEVBQXNCO0FBQ3BCSyxnQkFBQUEsWUFBWSxDQUFDSixHQUFiLENBQWlCVyxNQUFNLENBQUNaLEtBQXhCO0FBQ0FJLGdCQUFBQSxVQUFVLENBQUNILEdBQVgsQ0FBZVcsTUFBTSxDQUFDWixLQUF0QjtBQUNEO0FBQ0YsYUFMRCxNQUtPLElBQUlZLE1BQU0sQ0FBQ0MsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUNuQyxrQkFBSVIsWUFBWSxDQUFDUyxHQUFiLENBQWlCRixNQUFNLENBQUNaLEtBQXhCLENBQUosRUFBb0M7QUFDbENLLGdCQUFBQSxZQUFZLENBQUNVLE1BQWIsQ0FBb0JILE1BQU0sQ0FBQ1osS0FBM0I7QUFDQUksZ0JBQUFBLFVBQVUsQ0FBQ1ksTUFBWCxDQUFrQkosTUFBTSxDQUFDWixLQUF6QjtBQUNEO0FBQ0Y7QUFDRixXQVpEO0FBYUQsU0F6QjJCO0FBMEI1QmlCLFFBQUFBLEtBMUI0QixpQkEwQnRCQyxHQTFCc0IsRUEwQmpCO0FBQ1RkLFVBQUFBLFVBQVUsQ0FBQ2EsS0FBWCxDQUFpQkMsR0FBakI7QUFDRCxTQTVCMkI7QUE2QjVCQyxRQUFBQSxRQTdCNEIsc0JBNkJqQjtBQUNUZixVQUFBQSxVQUFVLENBQUNnQixHQUFYO0FBQ0Q7QUEvQjJCLE9BQWxCLENBQVo7QUFrQ0EsYUFBT2QsR0FBUDtBQUNEO0FBakRnQixHQUFaLENBQVA7QUFtREQ7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycywgbm8tcmVkZWNsYXJlICovXG5cbmltcG9ydCBMaXZlU2V0IGZyb20gJy4nO1xuXG5kZWNsYXJlIGZ1bmN0aW9uIGZpbHRlcjxUPihsaXZlU2V0OiBMaXZlU2V0PFQ+LCBjYjogdHlwZW9mIEJvb2xlYW4pOiBMaXZlU2V0PCROb25NYXliZVR5cGU8VD4+O1xuZGVjbGFyZSBmdW5jdGlvbiBmaWx0ZXI8VD4obGl2ZVNldDogTGl2ZVNldDxUPiwgY2I6ICh2YWx1ZTogVCkgPT4gYW55KTogTGl2ZVNldDxUPjtcblxuLyo6OiBleHBvcnQgZGVmYXVsdCBmaWx0ZXI7ICovXG5cbi8qOjogYCAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmlsdGVyPFQ+KGxpdmVTZXQ6IExpdmVTZXQ8VD4sIGNiOiAodmFsdWU6IFQpID0+IGFueSk6IExpdmVTZXQ8VD4ge1xuICByZXR1cm4gbmV3IExpdmVTZXQoe1xuICAgIHNjaGVkdWxlcjogbGl2ZVNldC5nZXRTY2hlZHVsZXIoKSxcbiAgICByZWFkKCkge1xuICAgICAgY29uc3QgcmV0ID0gbmV3IFNldCgpO1xuICAgICAgbGl2ZVNldC52YWx1ZXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKGNiKHZhbHVlKSkge1xuICAgICAgICAgIHJldC5hZGQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcbiAgICBsaXN0ZW4oc2V0VmFsdWVzLCBjb250cm9sbGVyKSB7XG4gICAgICBjb25zdCBwYXNzZWRGaWx0ZXIgPSBuZXcgU2V0KCk7XG5cbiAgICAgIGNvbnN0IHN1YiA9IGxpdmVTZXQuc3Vic2NyaWJlKHtcbiAgICAgICAgc3RhcnQoKSB7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICBsaXZlU2V0LnZhbHVlcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKGNiKHZhbHVlKSkge1xuICAgICAgICAgICAgICBwYXNzZWRGaWx0ZXIuYWRkKHZhbHVlKTtcbiAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcy5hZGQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgbmV4dChjaGFuZ2VzKSB7XG4gICAgICAgICAgY2hhbmdlcy5mb3JFYWNoKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlLnR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICAgIGlmIChjYihjaGFuZ2UudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkRmlsdGVyLmFkZChjaGFuZ2UudmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuYWRkKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLnR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICAgIGlmIChwYXNzZWRGaWx0ZXIuaGFzKGNoYW5nZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWRGaWx0ZXIuZGVsZXRlKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29udHJvbGxlci5yZW1vdmUoY2hhbmdlLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcihlcnIpIHtcbiAgICAgICAgICBjb250cm9sbGVyLmVycm9yKGVycik7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlKCkge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gc3ViO1xuICAgIH1cbiAgfSk7XG59XG4vKjo6IGAgKi9cbiJdfQ==