"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.skipLast = void 0; var identity_1 = require("../util/identity"); var lift_1 = require("../util/lift"); var OperatorSubscriber_1 = require("./OperatorSubscriber"); function skipLast(skipCount) { return skipCount <= 0 ? identity_1.identity : lift_1.operate(function (source, subscriber) { var ring = new Array(skipCount); var seen = 0; source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { var valueIndex = seen++; if (valueIndex < skipCount) { ring[valueIndex] = value; } else { var index = valueIndex % skipCount; var oldValue = ring[index]; ring[index] = value; subscriber.next(oldValue); } })); return function () { ring = null; }; }); } exports.skipLast = skipLast; //# sourceMappingURL=skipLast.js.map