UNPKG

live-set

Version:

Class representing a changing and transformable collection of items.

63 lines (57 loc) 6.38 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = map; var _ = _interopRequireDefault(require(".")); function map(liveSet, cb) { return new _.default({ scheduler: liveSet.getScheduler(), read: function read() { var s = new Set(); liveSet.values().forEach(function (value) { s.add(cb(value)); }); return s; }, listen: function listen(setValues, controller) { var m = new Map(); var sub = liveSet.subscribe({ start: function start() { var s = new Set(); liveSet.values().forEach(function (value) { var newValue = cb(value); m.set(value, newValue); s.add(newValue); }); setValues(s); }, next: function next(changes) { changes.forEach(function (change) { if (change.type === 'add') { var newValue = cb(change.value); m.set(change.value, newValue); controller.add(newValue); } else if (change.type === 'remove') { var _newValue = m.get(change.value); if (!_newValue) throw new Error('removed item not in liveset'); m.delete(change.value); controller.remove(_newValue); } }); }, 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tYXAuanMiXSwibmFtZXMiOlsibWFwIiwibGl2ZVNldCIsImNiIiwiTGl2ZVNldCIsInNjaGVkdWxlciIsImdldFNjaGVkdWxlciIsInJlYWQiLCJzIiwiU2V0IiwidmFsdWVzIiwiZm9yRWFjaCIsInZhbHVlIiwiYWRkIiwibGlzdGVuIiwic2V0VmFsdWVzIiwiY29udHJvbGxlciIsIm0iLCJNYXAiLCJzdWIiLCJzdWJzY3JpYmUiLCJzdGFydCIsIm5ld1ZhbHVlIiwic2V0IiwibmV4dCIsImNoYW5nZXMiLCJjaGFuZ2UiLCJ0eXBlIiwiZ2V0IiwiRXJyb3IiLCJkZWxldGUiLCJyZW1vdmUiLCJlcnJvciIsImVyciIsImNvbXBsZXRlIiwiZW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFFZSxTQUFTQSxHQUFULENBQWtCQyxPQUFsQixFQUF1Q0MsRUFBdkMsRUFBd0U7QUFDckYsU0FBTyxJQUFJQyxTQUFKLENBQVk7QUFDakJDLElBQUFBLFNBQVMsRUFBRUgsT0FBTyxDQUFDSSxZQUFSLEVBRE07QUFFakJDLElBQUFBLElBRmlCLGtCQUVWO0FBQ0wsVUFBTUMsQ0FBQyxHQUFHLElBQUlDLEdBQUosRUFBVjtBQUNBUCxNQUFBQSxPQUFPLENBQUNRLE1BQVIsR0FBaUJDLE9BQWpCLENBQXlCLFVBQUFDLEtBQUssRUFBSTtBQUNoQ0osUUFBQUEsQ0FBQyxDQUFDSyxHQUFGLENBQU1WLEVBQUUsQ0FBQ1MsS0FBRCxDQUFSO0FBQ0QsT0FGRDtBQUdBLGFBQU9KLENBQVA7QUFDRCxLQVJnQjtBQVNqQk0sSUFBQUEsTUFUaUIsa0JBU1ZDLFNBVFUsRUFTQ0MsVUFURCxFQVNhO0FBQzVCLFVBQU1DLENBQVcsR0FBRyxJQUFJQyxHQUFKLEVBQXBCO0FBRUEsVUFBTUMsR0FBRyxHQUFHakIsT0FBTyxDQUFDa0IsU0FBUixDQUFrQjtBQUM1QkMsUUFBQUEsS0FENEIsbUJBQ3BCO0FBQ04sY0FBTWIsQ0FBQyxHQUFHLElBQUlDLEdBQUosRUFBVjtBQUNBUCxVQUFBQSxPQUFPLENBQUNRLE1BQVIsR0FBaUJDLE9BQWpCLENBQXlCLFVBQUFDLEtBQUssRUFBSTtBQUNoQyxnQkFBTVUsUUFBUSxHQUFHbkIsRUFBRSxDQUFDUyxLQUFELENBQW5CO0FBQ0FLLFlBQUFBLENBQUMsQ0FBQ00sR0FBRixDQUFNWCxLQUFOLEVBQWFVLFFBQWI7QUFDQWQsWUFBQUEsQ0FBQyxDQUFDSyxHQUFGLENBQU1TLFFBQU47QUFDRCxXQUpEO0FBS0FQLFVBQUFBLFNBQVMsQ0FBQ1AsQ0FBRCxDQUFUO0FBQ0QsU0FUMkI7QUFVNUJnQixRQUFBQSxJQVY0QixnQkFVdkJDLE9BVnVCLEVBVWQ7QUFDWkEsVUFBQUEsT0FBTyxDQUFDZCxPQUFSLENBQWdCLFVBQUFlLE1BQU0sRUFBSTtBQUN4QixnQkFBSUEsTUFBTSxDQUFDQyxJQUFQLEtBQWdCLEtBQXBCLEVBQTJCO0FBQ3pCLGtCQUFNTCxRQUFRLEdBQUduQixFQUFFLENBQUN1QixNQUFNLENBQUNkLEtBQVIsQ0FBbkI7QUFDQUssY0FBQUEsQ0FBQyxDQUFDTSxHQUFGLENBQU1HLE1BQU0sQ0FBQ2QsS0FBYixFQUFvQlUsUUFBcEI7QUFDQU4sY0FBQUEsVUFBVSxDQUFDSCxHQUFYLENBQWVTLFFBQWY7QUFDRCxhQUpELE1BSU8sSUFBSUksTUFBTSxDQUFDQyxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO0FBQ25DLGtCQUFNTCxTQUFRLEdBQUdMLENBQUMsQ0FBQ1csR0FBRixDQUFNRixNQUFNLENBQUNkLEtBQWIsQ0FBakI7O0FBQ0Esa0JBQUksQ0FBQ1UsU0FBTCxFQUFlLE1BQU0sSUFBSU8sS0FBSixDQUFVLDZCQUFWLENBQU47QUFDZlosY0FBQUEsQ0FBQyxDQUFDYSxNQUFGLENBQVNKLE1BQU0sQ0FBQ2QsS0FBaEI7QUFDQUksY0FBQUEsVUFBVSxDQUFDZSxNQUFYLENBQWtCVCxTQUFsQjtBQUNEO0FBQ0YsV0FYRDtBQVlELFNBdkIyQjtBQXdCNUJVLFFBQUFBLEtBeEI0QixpQkF3QnRCQyxHQXhCc0IsRUF3QmpCO0FBQ1RqQixVQUFBQSxVQUFVLENBQUNnQixLQUFYLENBQWlCQyxHQUFqQjtBQUNELFNBMUIyQjtBQTJCNUJDLFFBQUFBLFFBM0I0QixzQkEyQmpCO0FBQ1RsQixVQUFBQSxVQUFVLENBQUNtQixHQUFYO0FBQ0Q7QUE3QjJCLE9BQWxCLENBQVo7QUFnQ0EsYUFBT2hCLEdBQVA7QUFDRDtBQTdDZ0IsR0FBWixDQUFQO0FBK0NEIiwic291cmNlc0NvbnRlbnQiOlsiLyogQGZsb3cgKi9cblxuaW1wb3J0IExpdmVTZXQgZnJvbSAnLic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1hcDxULFU+KGxpdmVTZXQ6IExpdmVTZXQ8VD4sIGNiOiAodmFsdWU6IFQpID0+IFUpOiBMaXZlU2V0PFU+IHtcbiAgcmV0dXJuIG5ldyBMaXZlU2V0KHtcbiAgICBzY2hlZHVsZXI6IGxpdmVTZXQuZ2V0U2NoZWR1bGVyKCksXG4gICAgcmVhZCgpIHtcbiAgICAgIGNvbnN0IHMgPSBuZXcgU2V0KCk7XG4gICAgICBsaXZlU2V0LnZhbHVlcygpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBzLmFkZChjYih2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcztcbiAgICB9LFxuICAgIGxpc3RlbihzZXRWYWx1ZXMsIGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IG06IE1hcDxULFU+ID0gbmV3IE1hcCgpO1xuXG4gICAgICBjb25zdCBzdWIgPSBsaXZlU2V0LnN1YnNjcmliZSh7XG4gICAgICAgIHN0YXJ0KCkge1xuICAgICAgICAgIGNvbnN0IHMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgbGl2ZVNldC52YWx1ZXMoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY2IodmFsdWUpO1xuICAgICAgICAgICAgbS5zZXQodmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHMuYWRkKG5ld1ZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzZXRWYWx1ZXMocyk7XG4gICAgICAgIH0sXG4gICAgICAgIG5leHQoY2hhbmdlcykge1xuICAgICAgICAgIGNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgaWYgKGNoYW5nZS50eXBlID09PSAnYWRkJykge1xuICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNiKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgICAgICAgIG0uc2V0KGNoYW5nZS52YWx1ZSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgICBjb250cm9sbGVyLmFkZChuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS50eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IG0uZ2V0KGNoYW5nZS52YWx1ZSk7XG4gICAgICAgICAgICAgIGlmICghbmV3VmFsdWUpIHRocm93IG5ldyBFcnJvcigncmVtb3ZlZCBpdGVtIG5vdCBpbiBsaXZlc2V0Jyk7XG4gICAgICAgICAgICAgIG0uZGVsZXRlKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIucmVtb3ZlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IoZXJyKSB7XG4gICAgICAgICAgY29udHJvbGxlci5lcnJvcihlcnIpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZSgpIHtcbiAgICAgICAgICBjb250cm9sbGVyLmVuZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN1YjtcbiAgICB9XG4gIH0pO1xufVxuIl19