diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/BehaviorSubject.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/BehaviorSubject.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/BehaviorSubject.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/BehaviorSubject.ts b/node_modules/rxjs/src/internal/BehaviorSubject.ts new file mode 100644 index 0000000..6540f13 --- /dev/null +++ b/node_modules/rxjs/src/internal/BehaviorSubject.ts @@ -0,0 +1,37 @@ +import { Subject } from './Subject'; +import { Subscriber } from './Subscriber'; +import { Subscription } from './Subscription'; + +/** + * A variant of Subject that requires an initial value and emits its current + * value whenever it is subscribed to. + */ +export class BehaviorSubject<T> extends Subject<T> { + constructor(private _value: T) { + super(); + } + + get value(): T { + return this.getValue(); + } + + /** @internal */ + protected _subscribe(subscriber: Subscriber<T>): Subscription { + const subscription = super._subscribe(subscriber); + !subscription.closed && subscriber.next(this._value); + return subscription; + } + + getValue(): T { + const { hasError, thrownError, _value } = this; + if (hasError) { + throw thrownError; + } + this._throwIfClosed(); + return _value; + } + + next(value: T): void { + super.next((this._value = value)); + } +} |
