aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/operators/throwIfEmpty.ts
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-06-28 17:26:46 -0700
committerPinapelz <yukais@pinapelz.com>2025-06-28 17:43:56 -0700
commite4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch)
tree06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/operators/throwIfEmpty.ts
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/throwIfEmpty.ts')
-rw-r--r--node_modules/rxjs/src/internal/operators/throwIfEmpty.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/throwIfEmpty.ts b/node_modules/rxjs/src/internal/operators/throwIfEmpty.ts
new file mode 100644
index 0000000..76497a2
--- /dev/null
+++ b/node_modules/rxjs/src/internal/operators/throwIfEmpty.ts
@@ -0,0 +1,60 @@
+import { EmptyError } from '../util/EmptyError';
+import { MonoTypeOperatorFunction } from '../types';
+import { operate } from '../util/lift';
+import { createOperatorSubscriber } from './OperatorSubscriber';
+
+/**
+ * If the source observable completes without emitting a value, it will emit
+ * an error. The error will be created at that time by the optional
+ * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.
+ *
+ * ![](throwIfEmpty.png)
+ *
+ * ## Example
+ *
+ * Throw an error if the document wasn't clicked within 1 second
+ *
+ * ```ts
+ * import { fromEvent, takeUntil, timer, throwIfEmpty } from 'rxjs';
+ *
+ * const click$ = fromEvent(document, 'click');
+ *
+ * click$.pipe(
+ * takeUntil(timer(1000)),
+ * throwIfEmpty(() => new Error('The document was not clicked within 1 second'))
+ * )
+ * .subscribe({
+ * next() {
+ * console.log('The document was clicked');
+ * },
+ * error(err) {
+ * console.error(err.message);
+ * }
+ * });
+ * ```
+ *
+ * @param errorFactory A factory function called to produce the
+ * error to be thrown when the source observable completes without emitting a
+ * value.
+ * @return A function that returns an Observable that throws an error if the
+ * source Observable completed without emitting.
+ */
+export function throwIfEmpty<T>(errorFactory: () => any = defaultErrorFactory): MonoTypeOperatorFunction<T> {
+ return operate((source, subscriber) => {
+ let hasValue = false;
+ source.subscribe(
+ createOperatorSubscriber(
+ subscriber,
+ (value) => {
+ hasValue = true;
+ subscriber.next(value);
+ },
+ () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))
+ )
+ );
+ });
+}
+
+function defaultErrorFactory() {
+ return new EmptyError();
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage