TenantAtlas/apps/platform/.pnpm-store/v10/files/64/a63d3cec0c4982e957bd1cd4ab273bbe6cdb5fd3f0e1eee35a56e17a73fabcdd6838a26afd811924cbcc5b46e1b7aba3abe351dcac2f4f219c2a7b6c63d32e
Ahmed Darrazi 9f74f7a658
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 51s
feat: compress governance operator outcomes
2026-04-19 14:15:11 +02:00

38 lines
880 B
Plaintext

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