rx-synchronizer
Version:
Commonly-used synchronizer bases that can be composed into more specific purposes.
36 lines • 1.92 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var javascriptutilities_1 = require("javascriptutilities");
var operators_1 = require("rxjs/operators");
var TriggerSync = require("./trigger");
var deepEqual = require("deep-equal");
var Impl = /** @class */ (function () {
function Impl(triggerSync) {
if (triggerSync === void 0) { triggerSync = undefined; }
this.triggerSync = triggerSync ? triggerSync : new TriggerSync.Impl();
}
Impl.prototype.synchronize = function (dependency) {
var acceptablePathName = dependency.acceptableUrlPathName;
this.triggerSync.synchronize(__assign({}, javascriptutilities_1.Objects.deleteKeys(dependency, 'acceptableUrlPathName', 'asyncOperatorScheduler', 'queryDebounceTime', 'queryStream', 'currentUrlPathName', 'urlQueryReceiver'), { triggerReceiver: dependency.urlQueryReceiver, triggerStream: dependency.queryStream.pipe(operators_1.filter(function () { return acceptablePathName === dependency.currentUrlPathName(); }), (function () {
var queryDebounce = dependency.queryDebounceTime;
if (queryDebounce) {
return function (obs) { return obs.pipe(operators_1.debounceTime(queryDebounce)); };
}
return function (obs) { return obs; };
})(), operators_1.distinctUntilChanged(function (query1, query2) { return deepEqual(query1, query2); })) }));
};
return Impl;
}());
exports.Impl = Impl;
//# sourceMappingURL=url-query.js.map