···
export function mergeMap<In, Out>(map: (value: In) => Source<Out>): Operator<In, Out> {
return source => sink => {
259
-
const innerTalkbacks: TalkbackFn[] = [];
259
+
let innerTalkbacks: TalkbackFn[] = [];
let outerTalkback = talkbackPlaceholder;
···
if (signal === SignalKind.End) {
if (innerTalkbacks.length) {
const index = innerTalkbacks.indexOf(talkback);
269
-
if (index > -1) innerTalkbacks.splice(index, 1);
269
+
if (index > -1) (innerTalkbacks = innerTalkbacks.slice()).splice(index, 1);
if (!innerTalkbacks.length) {
···
outerTalkback(TalkbackKind.Close);
312
-
while (innerTalkbacks.length) innerTalkbacks.shift()!(TalkbackKind.Close);
312
+
for (let i = 0, a = innerTalkbacks, l = innerTalkbacks.length; i < l; i++)
313
+
a[i](TalkbackKind.Close);
314
+
innerTalkbacks.length = 0;
if (!ended && !outerPulled) {
···
320
-
for (let i = 0; i < innerTalkbacks.length; i++) innerTalkbacks[i](TalkbackKind.Pull);
322
+
for (let i = 0, a = innerTalkbacks, l = innerTalkbacks.length; i < l; i++)
323
+
a[i](TalkbackKind.Pull);
···
export function share<T>(source: Source<T>): Source<T> {
478
-
const sinks: Sink<T>[] = [];
481
+
let sinks: Sink<T>[] = [];
let talkback = talkbackPlaceholder;
···
if (sinks.length === 1) {
if (signal === SignalKind.End) {
486
-
while (sinks.length) sinks.pop()!(SignalKind.End);
489
+
for (let i = 0, a = sinks, l = sinks.length; i < l; i++) a[i](SignalKind.End);
} else if (signal.tag === SignalKind.Start) {
491
-
for (let i = 0; i < sinks.length; i++) sinks[i](signal);
495
+
for (let i = 0, a = sinks, l = sinks.length; i < l; i++) a[i](signal);
···
if (signal === TalkbackKind.Close) {
const index = sinks.indexOf(sink);
499
-
if (index > -1) sinks.splice(index, 1);
503
+
if (index > -1) (sinks = sinks.slice()).splice(index, 1);
if (!sinks.length) talkback(TalkbackKind.Close);