@rapidmx/meet-plugin 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,21 +21,22 @@ export declare const REACTION_EMOJIS: readonly ["👍", "👏", "❤️", "🎉"
21
21
  * literal so a listener on the meeting's channel (which will also see other frame shapes if this server ever
22
22
  * grows other push consumers) can cheaply recognize and skip anything that isn't one of these.
23
23
  *
24
- * `hello`/`bye`/`presenter-claim`/`presenter-release`/`state`/`reaction` are broadcast (`to` left unset - every
25
- * participant is relevant); `offer`/`answer`/`ice-candidate`/`mute-request`/`kicked` are point-to-point (`to` is the
26
- * intended peer's uid) - a recipient that isn't `to` (when set) ignores the message, since a channel's pub/sub fans
27
- * every message out to every subscriber, sender included.
24
+ * `hello`/`bye`/`presenter-claim`/`presenter-release`/`state`/`reaction`/`talking-stick` are broadcast (`to` left
25
+ * unset - every participant is relevant); `offer`/`answer`/`ice-candidate`/`mute-request`/`kicked` are
26
+ * point-to-point (`to` is the intended peer's uid) - a recipient that isn't `to` (when set) ignores the message,
27
+ * since a channel's pub/sub fans every message out to every subscriber, sender included.
28
28
  *
29
- * `mute-request`/`kicked` are host moderation signals (see `MeshConnectionManager`'s doc comment) - purely
30
- * cooperative, like every other message here: the recipient's own client decides whether to honor one, and nothing
31
- * on the wire distinguishes a genuine host's message from any other participant's, since this client protocol has
32
- * no host identity of its own to check against server-side. `kicked` is paired with the sender also revoking the
33
- * recipient's server-side channel grant (`BaseVideoMeetingRoute.revokeChannelGrant()`), which is enforced and does
34
- * not depend on the recipient's client cooperating.
29
+ * `mute-request`/`kicked`/`talking-stick` are host moderation signals (see `MeshConnectionManager`'s doc comment) -
30
+ * purely cooperative, like every other message here: the recipient's own client decides whether to honor one, and
31
+ * nothing on the wire distinguishes a genuine host's message from any other participant's, since this client
32
+ * protocol has no host identity of its own to check against server-side. `kicked` is paired with the sender also
33
+ * revoking the recipient's server-side channel grant (`BaseVideoMeetingRoute.revokeChannelGrant()`), which is
34
+ * enforced and does not depend on the recipient's client cooperating; `talking-stick` has no server-side
35
+ * counterpart at all (see this module's doc comment on why it is purely an in-call runtime signal).
35
36
  */
36
37
  export interface SignalMessage {
37
38
  type: "video-meeting-signal";
38
- kind: "hello" | "bye" | "offer" | "answer" | "ice-candidate" | "presenter-claim" | "presenter-release" | "state" | "reaction" | "relay-fallback" | "mute-request" | "kicked";
39
+ kind: "hello" | "bye" | "offer" | "answer" | "ice-candidate" | "presenter-claim" | "presenter-release" | "state" | "reaction" | "relay-fallback" | "mute-request" | "kicked" | "talking-stick";
39
40
  /** The sender's authenticated uid - the real caller's own uid when `join()` returned `authenticated: true`, else
40
41
  * the `guest:<random>` uid `BaseVideoMeetingRoute.join()` minted. The server refuses a published message whose
41
42
  * `from` isn't the authenticated caller's uid (it stops one participant speaking as another), so this must be
@@ -54,6 +55,11 @@ export interface SignalMessage {
54
55
  state?: ParticipantState;
55
56
  /** `reaction` only - one of `REACTION_EMOJIS`. */
56
57
  emoji?: string;
58
+ /** `talking-stick` only - whether talking-stick mode is currently on. */
59
+ active?: boolean;
60
+ /** `talking-stick` only - the peer id (`MeshParticipant.uid`/this tab's own id) currently holding the stick.
61
+ * Absent when `active` is `false`, or when nobody holds it yet. */
62
+ holder?: string;
57
63
  /** `offer`/`answer` only. */
58
64
  sdp?: RTCSessionDescriptionInit;
59
65
  /** `ice-candidate` only. */
@@ -209,4 +215,12 @@ export type MeshEvent = {
209
215
  * "removed by the host" state rather than the ordinary "you left" one. */
210
216
  | {
211
217
  type: "kicked";
218
+ }
219
+ /** Talking-stick mode turned on or off, or the stick changed hands - see this module's doc comment and
220
+ * `MeshConnectionManager.setTalkingStick()`. `holder` is the peer id now holding it; absent while `active` is
221
+ * `false`, or (transiently) if whoever held it has since left the call. */
222
+ | {
223
+ type: "talking-stick-changed";
224
+ active: boolean;
225
+ holder?: string;
212
226
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rapidmx/meet-plugin",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "RapidMX plugin that provides WebRTC video conferencing, joinable from a calendar invite or a shared link.",
5
5
  "repository": "https://github.com/rapidmx/meet-plugin.git",
6
6
  "author": "RapidREST <rapidrests@gmail.com>",