Skip to content

Commit 1782f46

Browse files
committed
fix(parseobservablemarble): fix subscription offset
1 parent d256549 commit 1782f46

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/marbles/parseObservableMarble.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ const parseObservableMarble = <T>(
2323
throw new Error(`Observable marble cannot have unsubscription marker ${SubscriptionMarbleToken.UNSUBSCRIBE}`);
2424
}
2525

26-
const subscriptionIndex = marble.indexOf(SubscriptionMarbleToken.SUBSCRIBE) * frameTimeFactor;
27-
const frameOffset = subscriptionIndex < 0 ? 0 : subscriptionIndex;
26+
const marbleTokenArray = Array.from(marble).filter(token => token !== ObservableMarbleToken.NOOP);
27+
28+
const subscriptionIndex = marbleTokenArray.join('').indexOf(SubscriptionMarbleToken.SUBSCRIBE) * frameTimeFactor;
29+
const frameOffset = subscriptionIndex < 0 ? 0 : -subscriptionIndex;
2830

29-
const marbleTokenArray = Array.from(marble).filter(token => token !== ObservableMarbleToken.NOOP).slice(frameOffset);
3031
const values = marbleTokenArray.reduce(
3132
observableTokenParseReducer(value || null, error, materializeInnerObservables, frameTimeFactor),
3233
{

src/marbles/tokenParseReducer.ts

+1
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ const observableTokenParseReducer = <T>(
143143
acc.simultaneousGrouped = false;
144144
break;
145145
case SubscriptionMarbleToken.SUBSCRIBE:
146+
acc = increaseTimeFrame(acc, frameTimeFactor);
146147
break;
147148
default:
148149
if (acc.expandingTokenCount > 0) {

0 commit comments

Comments
 (0)