aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/BehaviorSubject.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/src/internal/BehaviorSubject.ts')
-rw-r--r--node_modules/rxjs/src/internal/BehaviorSubject.ts37
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));
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage