1033
*/
1034
getActiveSubscriptions(): readonly IActiveSubscriptionInfo[] {
1036
>
for (const [resource, entry] of this._subscriptions) {
1037
>
const value = entry.sub.value;
1038
>
const status = value === undefined ? 'pending' : value instanceof Error ? 'error' : 'snapshot';
1039
>
out.push({ resource, kind: entry.kind, refCount: entry.refCount, holders: this._summarizeHolders(entry), status });
1040
>
}
1041
>
return out;
1042
>
}
1043
1044
/** Group an entry's holders by owner name, sorted by descending count. */
1045
private _summarizeHolders(entry: ManagedSubscriptionEntry): IActiveSubscriptionHolder[] {
1047
>
for (const owner of entry.holders.values()) {
1048
>
counts.set(owner, (counts.get(owner) ?? 0) + 1);
1049
>
}
1050
>
return [...counts.entries()]
1051
>
.map(([owner, count]) => ({ owner, count }))
1052
>
.sort((a, b) => b.count - a.count);
1053
>
}
1054
1055
/**