@lifaon/rx-js-light
Version:
Blazing fast Observables
44 lines (43 loc) • 1.22 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
});
exports.createReplaySource = void 0;
var freeze_1 = require("../../../../../misc/helpers/freeze.cjs");
function createReplaySource(source, maxNumberOfValues) {
if (maxNumberOfValues === void 0) {
maxNumberOfValues = Number.POSITIVE_INFINITY;
}
var values = [];
var emit = function (value) {
values.push(value);
if (values.length > maxNumberOfValues) {
values.shift();
}
source.emit(value);
};
var subscribe = function (emit) {
for (var i = 0; i < values.length; i++) {
emit(values[i]);
}
return source.subscribe(emit);
};
return (0, freeze_1.freeze)(__assign(__assign({}, source), {
getValues: function () {
return values;
},
emit: emit,
subscribe: subscribe
}));
}
exports.createReplaySource = createReplaySource;