From e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 28 Jun 2025 17:26:46 -0700 Subject: initial commit: scaffolding --- .../rxjs/src/internal/operators/publish.ts | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 node_modules/rxjs/src/internal/operators/publish.ts (limited to 'node_modules/rxjs/src/internal/operators/publish.ts') diff --git a/node_modules/rxjs/src/internal/operators/publish.ts b/node_modules/rxjs/src/internal/operators/publish.ts new file mode 100644 index 0000000..6a42705 --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/publish.ts @@ -0,0 +1,93 @@ +import { Observable } from '../Observable'; +import { Subject } from '../Subject'; +import { multicast } from './multicast'; +import { ConnectableObservable } from '../observable/ConnectableObservable'; +import { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types'; +import { connect } from './connect'; + +/** + * Returns a connectable observable that, when connected, will multicast + * all values through a single underlying {@link Subject} instance. + * + * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}. + * `source.pipe(publish())` is equivalent to + * `connectable(source, { connector: () => new Subject(), resetOnDisconnect: false })`. + * If you're using {@link refCount} after `publish`, use {@link share} operator instead. + * `source.pipe(publish(), refCount())` is equivalent to + * `source.pipe(share({ resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`. + * Details: https://rxjs.dev/deprecations/multicasting + */ +export function publish(): UnaryFunction, ConnectableObservable>; + +/** + * Returns an observable, that when subscribed to, creates an underlying {@link Subject}, + * provides an observable view of it to a `selector` function, takes the observable result of + * that selector function and subscribes to it, sending its values to the consumer, _then_ connects + * the subject to the original source. + * + * @param selector A function used to setup multicasting prior to automatic connection. + * + * @deprecated Will be removed in v8. Use the {@link connect} operator instead. + * `publish(selector)` is equivalent to `connect(selector)`. + * Details: https://rxjs.dev/deprecations/multicasting + */ +export function publish>(selector: (shared: Observable) => O): OperatorFunction>; + +/** + * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called + * before it begins emitting items to those Observers that have subscribed to it. + * + * Makes a cold Observable hot + * + * ![](publish.png) + * + * ## Examples + * + * Make `source$` hot by applying `publish` operator, then merge each inner observable into a single one + * and subscribe + * + * ```ts + * import { zip, interval, of, map, publish, merge, tap } from 'rxjs'; + * + * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)) + * .pipe(map(([, number]) => number)); + * + * source$ + * .pipe( + * publish(multicasted$ => + * merge( + * multicasted$.pipe(tap(x => console.log('Stream 1:', x))), + * multicasted$.pipe(tap(x => console.log('Stream 2:', x))), + * multicasted$.pipe(tap(x => console.log('Stream 3:', x))) + * ) + * ) + * ) + * .subscribe(); + * + * // Results every two seconds + * // Stream 1: 1 + * // Stream 2: 1 + * // Stream 3: 1 + * // ... + * // Stream 1: 9 + * // Stream 2: 9 + * // Stream 3: 9 + * ``` + * + * @see {@link publishLast} + * @see {@link publishReplay} + * @see {@link publishBehavior} + * + * @param selector Optional selector function which can use the multicasted source sequence as many times + * as needed, without causing multiple subscriptions to the source sequence. + * Subscribers to the given source will receive all notifications of the source from the time of the subscription on. + * @return A function that returns a ConnectableObservable that upon connection + * causes the source Observable to emit items to its Observers. + * @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 publish(selector?: OperatorFunction): MonoTypeOperatorFunction | OperatorFunction { + return selector ? (source) => connect(selector)(source) : (source) => multicast(new Subject())(source); +} -- cgit v1.2.3