rx-sandbox
Version:
Marble diagram DSL based test suite for RxJS 6/7
25 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSubscriptionMarble = void 0;
const coreInternalImport_1 = require("../utils/coreInternalImport");
const ObservableMarbleToken_1 = require("./ObservableMarbleToken");
const tokenParseReducer_1 = require("./tokenParseReducer");
const parseSubscriptionMarble = (marble, frameTimeFactor = 1, maxFrame = 1000) => {
if (!marble) {
return new coreInternalImport_1.SubscriptionLog(Number.POSITIVE_INFINITY);
}
const marbleTokenArray = Array.from(marble).filter((token) => token !== ObservableMarbleToken_1.ObservableMarbleToken.NOOP);
const value = marbleTokenArray.reduce((0, tokenParseReducer_1.subscriptionTokenParseReducer)(frameTimeFactor, maxFrame), {
currentTimeFrame: 0,
subscriptionFrame: Number.POSITIVE_INFINITY,
unsubscriptionFrame: Number.POSITIVE_INFINITY,
simultaneousGrouped: false,
expandingTokenCount: 0,
expandingValue: [],
});
return value.unsubscriptionFrame === Number.POSITIVE_INFINITY
? new coreInternalImport_1.SubscriptionLog(value.subscriptionFrame)
: new coreInternalImport_1.SubscriptionLog(value.subscriptionFrame, value.unsubscriptionFrame);
};
exports.parseSubscriptionMarble = parseSubscriptionMarble;
//# sourceMappingURL=parseSubscriptionMarble.js.map