From 54d5d1317befa1f552df8b55d49df8a0ea391a56 Mon Sep 17 00:00:00 2001 From: buthim Date: Sat, 28 Mar 2026 16:40:31 +0800 Subject: [PATCH] feat(webrtc): add values(), keys(), size to RTCStatsReport for W3C Map-like compliance RTCStatsReport should expose a Map-like interface per the W3C spec. The missing values() method caused consumers iterating stats via Symbol.iterator to receive [key, value] tuples instead of stat objects, breaking direct-pair detection in openclaw-helper. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/webrtc/src/stats.ts | 12 ++++++++++++ packages/webrtc/src/types.ts | 3 +++ 2 files changed, 15 insertions(+) diff --git a/packages/webrtc/src/stats.ts b/packages/webrtc/src/stats.ts index 7285c1b..508935a 100644 --- a/packages/webrtc/src/stats.ts +++ b/packages/webrtc/src/stats.ts @@ -13,10 +13,22 @@ export class RTCStatsReportImpl { this._map = map; } + get size(): number { + return this._map.size; + } + entries(): IterableIterator<[string, RTCStats]> { return this._map.entries(); } + keys(): IterableIterator { + return this._map.keys(); + } + + values(): IterableIterator { + return this._map.values(); + } + get(id: string): RTCStats | undefined { return this._map.get(id); } diff --git a/packages/webrtc/src/types.ts b/packages/webrtc/src/types.ts index 7eae91e..252bb0d 100644 --- a/packages/webrtc/src/types.ts +++ b/packages/webrtc/src/types.ts @@ -149,7 +149,10 @@ export interface RTCIceCandidatePairStats extends RTCStats { } export interface RTCStatsReport { + readonly size: number; entries(): IterableIterator<[string, RTCStats]>; + keys(): IterableIterator; + values(): IterableIterator; get(id: string): RTCStats | undefined; has(id: string): boolean; forEach(callbackfn: (value: RTCStats, key: string) => void): void;