@rivmux/protocol 0.5.0 → 1.0.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.
package/README.md CHANGED
@@ -1,3 +1,14 @@
1
1
  # Rivmux Protocol
2
2
 
3
- Protocol TypeScript contracts used by Rivmux browser packages.
3
+ `@rivmux/protocol` 提供 Rivmux 浏览器包共享的 TypeScript 类型与 Worker 消息契约。
4
+
5
+ 该包面向内部包边界维护,不是普通用户的播放器入口。`rivmux` 会重新导出用户需要的选项、事件、错误、媒体信息和能力矩阵类型;应用代码应优先依赖 `rivmux`。
6
+
7
+ 关键导出包括:
8
+
9
+ - `RivmuxPlayerOptions` 及各分组配置类型。
10
+ - `PlayerEventMap`、`PlayerError`、`PlayerWarning` 和重连信息类型;播放器初始化事件为 `initialized`。
11
+ - `RivmuxCapabilities`、`RuntimeCapabilities`、`DecodingCapabilities` 与 `SupportStatus`。
12
+ - 主线程与 Dedicated Worker 之间使用的生命周期、媒体和诊断消息契约。Worker 选项在 `init` 命令中一次性传入;当前不提供动态选项更新命令。
13
+
14
+ 协议变更必须同步更新播放器、Worker 和对应测试;公开类型当前采用手动维护方式。
@@ -0,0 +1,29 @@
1
+ export type SupportStatus = 'supported' | 'unsupported' | 'unknown';
2
+ export interface RuntimeCapabilities {
3
+ dedicatedWorker: boolean;
4
+ workerMse: boolean;
5
+ fetchStreaming: boolean;
6
+ readableStream: boolean;
7
+ webAssembly: boolean;
8
+ }
9
+ export interface DecodingCapabilities {
10
+ video: {
11
+ avc: SupportStatus;
12
+ hevc: SupportStatus;
13
+ av1: SupportStatus;
14
+ };
15
+ audio: {
16
+ aac: SupportStatus;
17
+ opus: SupportStatus;
18
+ };
19
+ stableProfiles: {
20
+ avcAac: SupportStatus;
21
+ hevcAac: SupportStatus;
22
+ };
23
+ }
24
+ export interface RivmuxCapabilities {
25
+ supported: boolean;
26
+ runtime: RuntimeCapabilities;
27
+ decoding: DecodingCapabilities;
28
+ }
29
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAA;AAEnE,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE;QACL,GAAG,EAAE,aAAa,CAAA;QAClB,IAAI,EAAE,aAAa,CAAA;QACnB,GAAG,EAAE,aAAa,CAAA;KACnB,CAAA;IACD,KAAK,EAAE;QACL,GAAG,EAAE,aAAa,CAAA;QAClB,IAAI,EAAE,aAAa,CAAA;KACpB,CAAA;IACD,cAAc,EAAE;QACd,MAAM,EAAE,aAAa,CAAA;QACrB,OAAO,EAAE,aAAa,CAAA;KACvB,CAAA;CACF;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,EAAE,oBAAoB,CAAA;CAC/B"}
@@ -23,18 +23,23 @@ export type PlayerStats = {
23
23
  };
24
24
  /** High-level category for a player error. */
25
25
  export type PlayerErrorKind = 'network' | 'unsupported' | 'demux' | 'codec' | 'mux' | 'mse' | 'runtime';
26
+ /** Serializable error details carried across the Worker boundary. */
27
+ export type PlayerErrorCause = {
28
+ name: string;
29
+ message: string;
30
+ };
26
31
  /** Structured error emitted by the player and runtime. */
27
32
  export type PlayerError = {
28
33
  kind: PlayerErrorKind;
29
34
  code: string;
30
35
  message: string;
31
36
  terminal: boolean;
32
- cause?: unknown;
37
+ cause?: PlayerErrorCause;
33
38
  };
34
39
  /** Structured recoverable warning emitted by the player and runtime. */
35
40
  export type PlayerWarning = {
36
41
  code: string;
37
42
  message: string;
38
- cause?: unknown;
43
+ cause?: PlayerErrorCause;
39
44
  };
40
45
  //# sourceMappingURL=diagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;AAEvG,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAA;AAEvG,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,eAAe,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB,CAAA;AAED,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB,CAAA"}
package/dist/events.d.ts CHANGED
@@ -1,12 +1,34 @@
1
1
  import type { MediaInfo } from './media';
2
2
  import type { PlayerError, PlayerStats, PlayerWarning } from './diagnostics';
3
+ /** Network failure category that caused a live stream reconnect. */
4
+ export type ReconnectReason = 'http-status' | 'network-error' | 'read-error' | 'read-timeout' | 'unexpected-eof';
5
+ /** Details emitted after the runtime schedules another connection attempt. */
6
+ export type ReconnectInfo = {
7
+ /** One-based connection attempt number within the current recovery cycle. */
8
+ attempt: number;
9
+ /** Maximum connection attempts in the current recovery cycle, including the failed connection. */
10
+ maxAttempts: number;
11
+ /** Delay before the next connection attempt starts. */
12
+ delayMs: number;
13
+ /** Failure category that caused this recovery cycle. */
14
+ reason: ReconnectReason;
15
+ };
16
+ /** Details emitted after a reconnected session appends its first media segment. */
17
+ export type RecoveryInfo = {
18
+ /** Connection attempt that successfully recovered playback. */
19
+ attempt: number;
20
+ /** Elapsed time between the recoverable failure and recovery. */
21
+ downtimeMs: number;
22
+ };
3
23
  /** Payload map for player events. */
4
24
  export type PlayerEventMap = {
5
- ready: undefined;
25
+ initialized: undefined;
6
26
  mediaInfo: MediaInfo;
7
27
  stats: PlayerStats;
8
28
  warning: PlayerWarning;
9
29
  error: PlayerError;
30
+ reconnecting: ReconnectInfo;
31
+ recovered: RecoveryInfo;
10
32
  stopped: undefined;
11
33
  destroyed: undefined;
12
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE5E,qCAAqC;AACrC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,SAAS,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,yBAAyB;AACzB,MAAM,MAAM,eAAe,GAAG,MAAM,cAAc,CAAA;AAElD,mCAAmC;AACnC,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE5E,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEhH,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,WAAW,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,MAAM,EAAE,eAAe,CAAA;CACxB,CAAA;AAED,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG;IACzB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,qCAAqC;AACrC,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,SAAS,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,aAAa,CAAA;IAC3B,SAAS,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,SAAS,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,yBAAyB;AACzB,MAAM,MAAM,eAAe,GAAG,MAAM,cAAc,CAAA;AAElD,mCAAmC;AACnC,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export type * from './capabilities';
1
2
  export type * from './diagnostics';
2
3
  export type * from './events';
3
4
  export type * from './media';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAA;AAClC,mBAAmB,UAAU,CAAA;AAC7B,mBAAmB,SAAS,CAAA;AAC5B,mBAAmB,WAAW,CAAA;AAC9B,mBAAmB,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,gBAAgB,CAAA;AACnC,mBAAmB,eAAe,CAAA;AAClC,mBAAmB,UAAU,CAAA;AAC7B,mBAAmB,SAAS,CAAA;AAC5B,mBAAmB,WAAW,CAAA;AAC9B,mBAAmB,UAAU,CAAA"}
package/dist/media.d.ts CHANGED
@@ -36,10 +36,18 @@ export type PlaybackControlAction = {
36
36
  targetTime: number;
37
37
  reason: 'latency-max-exceeded';
38
38
  };
39
+ /** Structured, clone-safe failure returned for a playback operation. */
40
+ export type PlaybackControlError = {
41
+ name: string;
42
+ message: string;
43
+ };
39
44
  /** Result of applying a worker-requested playback operation. */
40
45
  export type PlaybackControlResult = {
41
46
  type: PlaybackControlAction['type'];
42
- accepted: boolean;
43
- message?: string;
47
+ accepted: true;
48
+ } | {
49
+ type: PlaybackControlAction['type'];
50
+ accepted: false;
51
+ error: PlaybackControlError;
44
52
  };
45
53
  //# sourceMappingURL=media.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG;IACtB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,GAAG,qBAAqB,CAAA;CAAE,GAC3G;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAExE,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG;IACtB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,GAAG,qBAAqB,CAAA;CAAE,GAC3G;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAExE,wEAAwE;AACxE,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,EAAE,IAAI,CAAA;CACf,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,oBAAoB,CAAA;CAC5B,CAAA"}
package/dist/options.d.ts CHANGED
@@ -24,29 +24,31 @@ export type NetworkOptions = {
24
24
  headers?: Record<string, string>;
25
25
  /** Fetch credentials mode used for stream requests. */
26
26
  credentials?: RequestCredentials;
27
+ /** Maximum time without a stream chunk while reads are active, in milliseconds. */
28
+ readIdleTimeoutMs?: number;
27
29
  /** Retry policy for recoverable stream request failures. */
28
30
  retry?: {
29
- /** Maximum number of attempts for a stream request. */
31
+ /** Maximum connection attempts per recovery cycle, including the current connection. */
30
32
  maxAttempts?: number;
31
- /** Base retry delay in milliseconds. */
33
+ /** Base exponential retry delay in milliseconds. */
32
34
  backoffMs?: number;
35
+ /** Maximum retry delay after jitter is applied, in milliseconds. */
36
+ maxBackoffMs?: number;
37
+ /** Symmetric jitter ratio in the inclusive range from 0 to 1. */
38
+ jitterRatio?: number;
33
39
  };
34
40
  };
35
41
  /** Advanced runtime asset deployment options. */
36
42
  export type RuntimeOptions = {
37
- /** Must remain true while M1 supports only worker-backed Media Source Extensions. */
38
- preferWorkerMse?: boolean;
39
43
  /** Overrides the packaged Dedicated Worker script URL. */
40
44
  workerUrl?: string;
41
45
  /** Overrides the WASM binary URL used by the packaged wasm-bindgen runtime. */
42
46
  wasmUrl?: string;
43
47
  };
44
- /** Diagnostics and debug reporting options. */
48
+ /** Runtime diagnostics reporting options. */
45
49
  export type DiagnosticsOptions = {
46
50
  /** Requested runtime stats interval in milliseconds. */
47
51
  statsIntervalMs?: number;
48
- /** Enables debug-oriented behavior where supported by the runtime. */
49
- debug?: boolean;
50
52
  };
51
53
  /** Top-level options accepted by `new RivmuxPlayer(url, options)`. */
52
54
  export type RivmuxPlayerOptions = {
@@ -61,17 +63,21 @@ export type NormalizedLatencyOptions = Required<LatencyOptions>;
61
63
  export type NormalizedNetworkOptions = {
62
64
  headers: Record<string, string>;
63
65
  credentials: RequestCredentials;
66
+ readIdleTimeoutMs: number;
64
67
  retry: {
65
68
  maxAttempts: number;
66
69
  backoffMs: number;
70
+ maxBackoffMs: number;
71
+ jitterRatio: number;
67
72
  };
68
73
  };
69
74
  export type NormalizedRuntimeOptions = {
70
- preferWorkerMse: boolean;
71
75
  workerUrl?: string;
72
76
  wasmUrl?: string;
73
77
  };
74
- export type NormalizedDiagnosticsOptions = Required<DiagnosticsOptions>;
78
+ export type NormalizedDiagnosticsOptions = {
79
+ statsIntervalMs: number;
80
+ };
75
81
  /** Fully populated player options after defaults are applied. */
76
82
  export type NormalizedRivmuxPlayerOptions = {
77
83
  playback: NormalizedPlaybackOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,8DAA8D;AAC9D,MAAM,MAAM,cAAc,GAAG;IAC3B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG;IAC3B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,uDAAuD;IACvD,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,4DAA4D;IAC5D,KAAK,CAAC,EAAE;QACN,uDAAuD;QACvD,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,wCAAwC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG;IAC3B,qFAAqF;IACrF,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,+CAA+C;AAC/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;AACjE,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;AAE/D,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAA;AAEvE,iEAAiE;AACjE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,yBAAyB,CAAA;IACnC,OAAO,EAAE,wBAAwB,CAAA;IACjC,OAAO,EAAE,wBAAwB,CAAA;IACjC,OAAO,EAAE,wBAAwB,CAAA;IACjC,WAAW,EAAE,4BAA4B,CAAA;CAC1C,CAAA"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
package/dist/worker.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { PlayerError, PlayerStats, PlayerWarning } from './diagnostics';
2
+ import type { ReconnectInfo, RecoveryInfo } from './events';
2
3
  import type { MediaInfo, PlaybackControlAction, PlaybackControlResult, VideoElementState } from './media';
3
4
  import type { NormalizedRivmuxPlayerOptions } from './options';
4
5
  /** Command sent from the player facade to the runtime worker. */
@@ -13,9 +14,6 @@ export type WorkerCommand = {
13
14
  type: 'start';
14
15
  } | {
15
16
  type: 'stop';
16
- } | {
17
- type: 'update-options';
18
- options: Partial<NormalizedRivmuxPlayerOptions>;
19
17
  } | {
20
18
  type: 'video-state';
21
19
  state: VideoElementState;
@@ -33,6 +31,8 @@ export type WorkerMessage = {
33
31
  } | {
34
32
  type: 'media-source-handle';
35
33
  handle: MediaSourceHandle;
34
+ } | {
35
+ type: 'started';
36
36
  } | {
37
37
  type: 'media-info';
38
38
  mediaInfo: MediaInfo;
@@ -45,6 +45,12 @@ export type WorkerMessage = {
45
45
  } | {
46
46
  type: 'error';
47
47
  error: PlayerError;
48
+ } | {
49
+ type: 'reconnecting';
50
+ info: ReconnectInfo;
51
+ } | {
52
+ type: 'recovered';
53
+ info: RecoveryInfo;
48
54
  } | {
49
55
  type: 'playback-control';
50
56
  action: PlaybackControlAction;
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACzG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAA;AAE9D,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,6BAA6B,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAEvB,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACzG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAA;AAE9D,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,6BAA6B,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAEvB,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rivmux/protocol",
3
- "version": "0.5.0",
3
+ "version": "1.0.0",
4
4
  "description": "Protocol TypeScript contracts for Rivmux packages.",
5
5
  "homepage": "https://www.npmjs.com/package/@rivmux/protocol",
6
6
  "bugs": {
@@ -28,11 +28,7 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "devDependencies": {
30
30
  "typescript": "~6.0.3",
31
- "vitest": "^4.1.10"
32
- },
33
- "engines": {
34
- "node": "^22.18.0 || >=24.11.0",
35
- "pnpm": ">=10.0.0"
31
+ "vitest": "^4.1.11"
36
32
  },
37
33
  "scripts": {
38
34
  "build": "tsc -b",