UNPKG

rx-sandbox

Version:

Marble diagram DSL based test suite for RxJS 6/7

30 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateSubscriptionFrame = void 0; const parseSubscriptionMarble_1 = require("../marbles/parseSubscriptionMarble"); const coreInternalImport_1 = require("../utils/coreInternalImport"); const calculateSubscriptionFrame = (observable, unsubscriptionMarbles, frameTimeFactor) => { const { subscribedFrame, unsubscribedFrame } = (0, parseSubscriptionMarble_1.parseSubscriptionMarble)(unsubscriptionMarbles, frameTimeFactor); if (subscribedFrame === Number.POSITIVE_INFINITY) { return { subscribedFrame: 0, unsubscribedFrame }; } //looks internal of Observable implementation to determine source is hot or cold observable. //if source is hot, subscription / unsubscription works as specified, //if source is cold, subscription always triggers start of observable - adjust unsubscription frame as well let source = observable; while (!!source) { if (source instanceof coreInternalImport_1.HotObservable) { return { subscribedFrame, unsubscribedFrame }; } else if (source instanceof coreInternalImport_1.ColdObservable) { return { subscribedFrame: 0, unsubscribedFrame: unsubscribedFrame === Number.POSITIVE_INFINITY ? unsubscribedFrame : unsubscribedFrame - subscribedFrame, }; } source = source.source; } throw new Error('Cannot detect source observable type'); }; exports.calculateSubscriptionFrame = calculateSubscriptionFrame; //# sourceMappingURL=calculateSubscriptionFrame.js.map