aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/operators/publishReplay.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/publishReplay.ts')
-rw-r--r--node_modules/rxjs/src/internal/operators/publishReplay.ts96
1 files changed, 96 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/publishReplay.ts b/node_modules/rxjs/src/internal/operators/publishReplay.ts
new file mode 100644
index 0000000..47494e2
--- /dev/null
+++ b/node_modules/rxjs/src/internal/operators/publishReplay.ts
@@ -0,0 +1,96 @@
+import { Observable } from '../Observable';
+import { ReplaySubject } from '../ReplaySubject';
+import { multicast } from './multicast';
+import { MonoTypeOperatorFunction, OperatorFunction, TimestampProvider, ObservableInput, ObservedValueOf } from '../types';
+import { isFunction } from '../util/isFunction';
+
+/**
+ * Creates a {@link ConnectableObservable} that uses a {@link ReplaySubject}
+ * internally.
+ *
+ * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.
+ * @param windowTime The window time for the underlying {@link ReplaySubject}.
+ * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.
+ * @deprecated Will be removed in v8. To create a connectable observable that uses a
+ * {@link ReplaySubject} under the hood, use {@link connectable}.
+ * `source.pipe(publishReplay(size, time, scheduler))` is equivalent to
+ * `connectable(source, { connector: () => new ReplaySubject(size, time, scheduler), resetOnDisconnect: false })`.
+ * If you're using {@link refCount} after `publishReplay`, use the {@link share} operator instead.
+ * `publishReplay(size, time, scheduler), refCount()` is equivalent to
+ * `share({ connector: () => new ReplaySubject(size, time, scheduler), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.
+ * Details: https://rxjs.dev/deprecations/multicasting
+ */
+export function publishReplay<T>(
+ bufferSize?: number,
+ windowTime?: number,
+ timestampProvider?: TimestampProvider
+): MonoTypeOperatorFunction<T>;
+
+/**
+ * Creates an observable, that when subscribed to, will create a {@link ReplaySubject},
+ * and pass an observable from it (using [asObservable](api/index/class/Subject#asObservable)) to
+ * the `selector` function, which then returns an observable that is subscribed to before
+ * "connecting" the source to the internal `ReplaySubject`.
+ *
+ * Since this is deprecated, for additional details see the documentation for {@link connect}.
+ *
+ * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.
+ * @param windowTime The window time for the underlying {@link ReplaySubject}.
+ * @param selector A function used to setup the multicast.
+ * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.
+ * @deprecated Will be removed in v8. Use the {@link connect} operator instead.
+ * `source.pipe(publishReplay(size, window, selector, scheduler))` is equivalent to
+ * `source.pipe(connect(selector, { connector: () => new ReplaySubject(size, window, scheduler) }))`.
+ * Details: https://rxjs.dev/deprecations/multicasting
+ */
+export function publishReplay<T, O extends ObservableInput<any>>(
+ bufferSize: number | undefined,
+ windowTime: number | undefined,
+ selector: (shared: Observable<T>) => O,
+ timestampProvider?: TimestampProvider
+): OperatorFunction<T, ObservedValueOf<O>>;
+
+/**
+ * Creates a {@link ConnectableObservable} that uses a {@link ReplaySubject}
+ * internally.
+ *
+ * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.
+ * @param windowTime The window time for the underlying {@link ReplaySubject}.
+ * @param selector Passing `undefined` here determines that this operator will return a {@link ConnectableObservable}.
+ * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.
+ * @deprecated Will be removed in v8. To create a connectable observable that uses a
+ * {@link ReplaySubject} under the hood, use {@link connectable}.
+ * `source.pipe(publishReplay(size, time, scheduler))` is equivalent to
+ * `connectable(source, { connector: () => new ReplaySubject(size, time, scheduler), resetOnDisconnect: false })`.
+ * If you're using {@link refCount} after `publishReplay`, use the {@link share} operator instead.
+ * `publishReplay(size, time, scheduler), refCount()` is equivalent to
+ * `share({ connector: () => new ReplaySubject(size, time, scheduler), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.
+ * Details: https://rxjs.dev/deprecations/multicasting
+ */
+export function publishReplay<T, O extends ObservableInput<any>>(
+ bufferSize: number | undefined,
+ windowTime: number | undefined,
+ selector: undefined,
+ timestampProvider: TimestampProvider
+): OperatorFunction<T, ObservedValueOf<O>>;
+
+/**
+ * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the
+ * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's
+ * behaviors.
+ * Details: https://rxjs.dev/deprecations/multicasting
+ */
+export function publishReplay<T, R>(
+ bufferSize?: number,
+ windowTime?: number,
+ selectorOrScheduler?: TimestampProvider | OperatorFunction<T, R>,
+ timestampProvider?: TimestampProvider
+) {
+ if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {
+ timestampProvider = selectorOrScheduler;
+ }
+ const selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;
+ // Note, we're passing `selector!` here, because at runtime, `undefined` is an acceptable argument
+ // but it makes our TypeScript signature for `multicast` unhappy (as it should, because it's gross).
+ return (source: Observable<T>) => multicast(new ReplaySubject<T>(bufferSize, windowTime, timestampProvider), selector!)(source);
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage