From 8c2bd4a5b08a7e2f7493562479743834952abc42 Mon Sep 17 00:00:00 2001 From: Bill Barry Date: Sat, 15 May 2021 18:58:42 -0400 Subject: [PATCH 1/4] feat(Subject): add isObserved() api --- spec/Subject-spec.ts | 25 +++++++++++++++++++++++++ src/internal/Subject.ts | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/spec/Subject-spec.ts b/spec/Subject-spec.ts index 2691c6421c..5b23081e8c 100644 --- a/spec/Subject-spec.ts +++ b/spec/Subject-spec.ts @@ -430,6 +430,31 @@ describe('Subject', () => { done(); }); + it('should expose observed status', (done) => { + const subject = new Subject(); + + expect(subject.isObeserved()).to.equal(false); + + const sub1 = subject.subscribe(function (x) { + //noop + }); + + expect(subject.isObeserved()).to.equal(true); + + const sub2 = subject.subscribe(function (x) { + //noop + }); + + expect(subject.isObeserved()).to.equal(true); + sub1.unsubscribe(); + expect(subject.isObeserved()).to.equal(true); + sub2.unsubscribe(); + expect(subject.isObeserved()).to.equal(false); + subject.unsubscribe(); + expect(subject.isObeserved()).to.equal(false); + done(); + }); + it('should have a static create function that works', () => { expect(Subject.create).to.be.a('function'); const source = of(1, 2, 3, 4, 5); diff --git a/src/internal/Subject.ts b/src/internal/Subject.ts index 57f5d9d42a..2120fa3f75 100644 --- a/src/internal/Subject.ts +++ b/src/internal/Subject.ts @@ -91,6 +91,10 @@ export class Subject extends Observable implements SubscriptionLike { this.observers = null!; } + isObeserved() { + return this.observers?.length > 0; + } + /** @internal */ protected _trySubscribe(subscriber: Subscriber): TeardownLogic { this._throwIfClosed(); From 4798b0ff720172fb60b7673798e4e1e770d91cc7 Mon Sep 17 00:00:00 2001 From: Bill Barry Date: Wed, 19 May 2021 09:17:01 -0400 Subject: [PATCH 2/4] fix(Subject): typo, remove done from sync test --- spec/Subject-spec.ts | 15 +++++++-------- src/internal/Subject.ts | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/spec/Subject-spec.ts b/spec/Subject-spec.ts index 5b23081e8c..9424e1305b 100644 --- a/spec/Subject-spec.ts +++ b/spec/Subject-spec.ts @@ -430,29 +430,28 @@ describe('Subject', () => { done(); }); - it('should expose observed status', (done) => { + it('should expose observed status', () => { const subject = new Subject(); - expect(subject.isObeserved()).to.equal(false); + expect(subject.observed()).to.equal(false); const sub1 = subject.subscribe(function (x) { //noop }); - expect(subject.isObeserved()).to.equal(true); + expect(subject.observed()).to.equal(true); const sub2 = subject.subscribe(function (x) { //noop }); - expect(subject.isObeserved()).to.equal(true); + expect(subject.observed()).to.equal(true); sub1.unsubscribe(); - expect(subject.isObeserved()).to.equal(true); + expect(subject.observed()).to.equal(true); sub2.unsubscribe(); - expect(subject.isObeserved()).to.equal(false); + expect(subject.observed()).to.equal(false); subject.unsubscribe(); - expect(subject.isObeserved()).to.equal(false); - done(); + expect(subject.observed()).to.equal(false); }); it('should have a static create function that works', () => { diff --git a/src/internal/Subject.ts b/src/internal/Subject.ts index 2120fa3f75..465ef6eba6 100644 --- a/src/internal/Subject.ts +++ b/src/internal/Subject.ts @@ -91,7 +91,7 @@ export class Subject extends Observable implements SubscriptionLike { this.observers = null!; } - isObeserved() { + observed() { return this.observers?.length > 0; } From 1090d1abff310d55382750ec70065cc94622e83e Mon Sep 17 00:00:00 2001 From: Bill Barry Date: Wed, 19 May 2021 18:44:58 -0400 Subject: [PATCH 3/4] feat(subject): change observed method to property --- spec/Subject-spec.ts | 12 ++++++------ src/internal/Subject.ts | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/Subject-spec.ts b/spec/Subject-spec.ts index 9424e1305b..1f82ee6a87 100644 --- a/spec/Subject-spec.ts +++ b/spec/Subject-spec.ts @@ -433,25 +433,25 @@ describe('Subject', () => { it('should expose observed status', () => { const subject = new Subject(); - expect(subject.observed()).to.equal(false); + expect(subject.observed).to.equal(false); const sub1 = subject.subscribe(function (x) { //noop }); - expect(subject.observed()).to.equal(true); + expect(subject.observed).to.equal(true); const sub2 = subject.subscribe(function (x) { //noop }); - expect(subject.observed()).to.equal(true); + expect(subject.observed).to.equal(true); sub1.unsubscribe(); - expect(subject.observed()).to.equal(true); + expect(subject.observed).to.equal(true); sub2.unsubscribe(); - expect(subject.observed()).to.equal(false); + expect(subject.observed).to.equal(false); subject.unsubscribe(); - expect(subject.observed()).to.equal(false); + expect(subject.observed).to.equal(false); }); it('should have a static create function that works', () => { diff --git a/src/internal/Subject.ts b/src/internal/Subject.ts index 465ef6eba6..0fef20a6d7 100644 --- a/src/internal/Subject.ts +++ b/src/internal/Subject.ts @@ -91,7 +91,7 @@ export class Subject extends Observable implements SubscriptionLike { this.observers = null!; } - observed() { + get observed() { return this.observers?.length > 0; } From 0ec6fd13b3767fa1f3f6666cba5acab6ac9e9339 Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Fri, 21 May 2021 11:55:54 -0500 Subject: [PATCH 4/4] chore: update api_guardian files --- api_guard/dist/types/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/api_guard/dist/types/index.d.ts b/api_guard/dist/types/index.d.ts index 24ba35fb29..4c34cc78a3 100644 --- a/api_guard/dist/types/index.d.ts +++ b/api_guard/dist/types/index.d.ts @@ -392,6 +392,7 @@ export declare class Subject extends Observable implements SubscriptionLik closed: boolean; hasError: boolean; isStopped: boolean; + get observed(): boolean; observers: Observer[]; thrownError: any; constructor();