Rocky_Mountain_Vending/.pnpm-store/v10/files/ee/c1d806a8235128a66a6f0cc1bb9aebf6e12ca78f28ac45ad63770abb2097b236ef3b7240a815c4dcc36e7572d3652cfef031d62a7cbe4e66c97cd86faffa5f
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

60 lines
1.7 KiB
Text

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();
}