reactor-effect-client 0.2.0 → 0.3.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.
Files changed (219) hide show
  1. package/README.md +66 -6
  2. package/dist/FetchHttp.js +1 -1
  3. package/dist/FetchHttp.js.map +1 -1
  4. package/dist/PeerFactory.d.ts +13 -2
  5. package/dist/PeerFactory.d.ts.map +1 -1
  6. package/dist/PeerFactory.js.map +1 -1
  7. package/dist/PeerTypes.d.ts +2 -2
  8. package/dist/PeerTypes.d.ts.map +1 -1
  9. package/dist/Sequence.d.ts +18 -14
  10. package/dist/Sequence.d.ts.map +1 -1
  11. package/dist/Sequence.js +117 -122
  12. package/dist/Sequence.js.map +1 -1
  13. package/dist/SessionTypes.d.ts +172 -15
  14. package/dist/SessionTypes.d.ts.map +1 -1
  15. package/dist/SessionTypes.js +18 -1
  16. package/dist/SessionTypes.js.map +1 -1
  17. package/dist/bytes.js +3 -3
  18. package/dist/bytes.js.map +1 -1
  19. package/dist/contract.d.ts +120 -29
  20. package/dist/contract.d.ts.map +1 -1
  21. package/dist/contract.js +105 -73
  22. package/dist/contract.js.map +1 -1
  23. package/dist/coordinator/_internal/client.d.ts +111 -17
  24. package/dist/coordinator/_internal/client.d.ts.map +1 -1
  25. package/dist/coordinator/_internal/client.js +187 -74
  26. package/dist/coordinator/_internal/client.js.map +1 -1
  27. package/dist/coordinator/_internal/recording.d.ts +33 -0
  28. package/dist/coordinator/_internal/recording.d.ts.map +1 -0
  29. package/dist/coordinator/_internal/recording.js +123 -0
  30. package/dist/coordinator/_internal/recording.js.map +1 -0
  31. package/dist/coordinator/_internal/response.d.ts.map +1 -1
  32. package/dist/coordinator/_internal/response.js +5 -7
  33. package/dist/coordinator/_internal/response.js.map +1 -1
  34. package/dist/coordinator/_internal/schemas.d.ts +40 -6
  35. package/dist/coordinator/_internal/schemas.d.ts.map +1 -1
  36. package/dist/coordinator/_internal/schemas.js +94 -64
  37. package/dist/coordinator/_internal/schemas.js.map +1 -1
  38. package/dist/coordinator/index.d.ts +14 -2
  39. package/dist/coordinator/index.d.ts.map +1 -1
  40. package/dist/coordinator/index.js +14 -18
  41. package/dist/coordinator/index.js.map +1 -1
  42. package/dist/correlation.d.ts +15 -0
  43. package/dist/correlation.d.ts.map +1 -1
  44. package/dist/correlation.js +26 -8
  45. package/dist/correlation.js.map +1 -1
  46. package/dist/duration.d.ts +25 -0
  47. package/dist/duration.d.ts.map +1 -0
  48. package/dist/duration.js +47 -0
  49. package/dist/duration.js.map +1 -0
  50. package/dist/errors.d.ts +1264 -49
  51. package/dist/errors.d.ts.map +1 -1
  52. package/dist/errors.js +698 -46
  53. package/dist/errors.js.map +1 -1
  54. package/dist/h3/_internal/client.d.ts +2 -2
  55. package/dist/h3/_internal/client.d.ts.map +1 -1
  56. package/dist/h3/_internal/client.js +280 -146
  57. package/dist/h3/_internal/client.js.map +1 -1
  58. package/dist/h3/_internal/contracts.d.ts.map +1 -1
  59. package/dist/h3/_internal/contracts.js +2 -2
  60. package/dist/h3/_internal/contracts.js.map +1 -1
  61. package/dist/h3/_internal/deployment.d.ts.map +1 -1
  62. package/dist/h3/_internal/deployment.js +5 -4
  63. package/dist/h3/_internal/deployment.js.map +1 -1
  64. package/dist/h3/_internal/evidence.js +1 -1
  65. package/dist/h3/_internal/evidence.js.map +1 -1
  66. package/dist/h3/_internal/operations.d.ts +58 -0
  67. package/dist/h3/_internal/operations.d.ts.map +1 -0
  68. package/dist/h3/_internal/operations.js +268 -0
  69. package/dist/h3/_internal/operations.js.map +1 -0
  70. package/dist/h3/_internal/references.d.ts.map +1 -1
  71. package/dist/h3/_internal/references.js +3 -8
  72. package/dist/h3/_internal/references.js.map +1 -1
  73. package/dist/h3/_internal/request.js +1 -1
  74. package/dist/h3/_internal/request.js.map +1 -1
  75. package/dist/h3/_internal/retained.d.ts +22 -0
  76. package/dist/h3/_internal/retained.d.ts.map +1 -0
  77. package/dist/h3/_internal/retained.js +89 -0
  78. package/dist/h3/_internal/retained.js.map +1 -0
  79. package/dist/h3/_internal/state.d.ts +15 -1
  80. package/dist/h3/_internal/state.d.ts.map +1 -1
  81. package/dist/h3/_internal/state.js +69 -29
  82. package/dist/h3/_internal/state.js.map +1 -1
  83. package/dist/h3/index.d.ts +1 -1
  84. package/dist/h3/index.d.ts.map +1 -1
  85. package/dist/h3/messages.d.ts +118 -109
  86. package/dist/h3/messages.d.ts.map +1 -1
  87. package/dist/h3/messages.js +73 -51
  88. package/dist/h3/messages.js.map +1 -1
  89. package/dist/h3/types.d.ts +109 -13
  90. package/dist/h3/types.d.ts.map +1 -1
  91. package/dist/host.d.ts +6 -6
  92. package/dist/host.d.ts.map +1 -1
  93. package/dist/host.js +4 -5
  94. package/dist/host.js.map +1 -1
  95. package/dist/index.d.ts +11 -5
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +5 -1
  98. package/dist/index.js.map +1 -1
  99. package/dist/json.d.ts +13 -6
  100. package/dist/json.d.ts.map +1 -1
  101. package/dist/json.js +34 -14
  102. package/dist/json.js.map +1 -1
  103. package/dist/media-stream.d.ts.map +1 -1
  104. package/dist/media-stream.js +9 -11
  105. package/dist/media-stream.js.map +1 -1
  106. package/dist/observation.d.ts +9 -0
  107. package/dist/observation.d.ts.map +1 -1
  108. package/dist/observation.js +20 -18
  109. package/dist/observation.js.map +1 -1
  110. package/dist/orchestration/h3-source.d.ts +32 -4
  111. package/dist/orchestration/h3-source.d.ts.map +1 -1
  112. package/dist/orchestration/h3-source.js +47 -14
  113. package/dist/orchestration/h3-source.js.map +1 -1
  114. package/dist/orchestration/index.d.ts +9 -6
  115. package/dist/orchestration/index.d.ts.map +1 -1
  116. package/dist/orchestration/index.js +5 -3
  117. package/dist/orchestration/index.js.map +1 -1
  118. package/dist/orchestration/media-buffer.d.ts +12 -4
  119. package/dist/orchestration/media-buffer.d.ts.map +1 -1
  120. package/dist/orchestration/media-buffer.js +31 -11
  121. package/dist/orchestration/media-buffer.js.map +1 -1
  122. package/dist/orchestration/open-h3.d.ts +65 -0
  123. package/dist/orchestration/open-h3.d.ts.map +1 -0
  124. package/dist/orchestration/open-h3.js +65 -0
  125. package/dist/orchestration/open-h3.js.map +1 -0
  126. package/dist/orchestration/references.d.ts +5 -1
  127. package/dist/orchestration/references.d.ts.map +1 -1
  128. package/dist/orchestration/references.js +37 -34
  129. package/dist/orchestration/references.js.map +1 -1
  130. package/dist/orchestration/renewal-state.js +1 -1
  131. package/dist/orchestration/renewal-state.js.map +1 -1
  132. package/dist/orchestration/renewal.d.ts +64 -64
  133. package/dist/orchestration/renewal.d.ts.map +1 -1
  134. package/dist/orchestration/renewal.js +149 -88
  135. package/dist/orchestration/renewal.js.map +1 -1
  136. package/dist/orchestration/request.d.ts +11 -12
  137. package/dist/orchestration/request.d.ts.map +1 -1
  138. package/dist/orchestration/request.js +63 -66
  139. package/dist/orchestration/request.js.map +1 -1
  140. package/dist/orchestration/routing.d.ts.map +1 -1
  141. package/dist/orchestration/routing.js +17 -14
  142. package/dist/orchestration/routing.js.map +1 -1
  143. package/dist/orchestration/source-slot.d.ts +15 -5
  144. package/dist/orchestration/source-slot.d.ts.map +1 -1
  145. package/dist/orchestration/source-slot.js +40 -21
  146. package/dist/orchestration/source-slot.js.map +1 -1
  147. package/dist/orchestration/types.d.ts +594 -39
  148. package/dist/orchestration/types.d.ts.map +1 -1
  149. package/dist/orchestration/types.js +20 -0
  150. package/dist/orchestration/types.js.map +1 -1
  151. package/dist/protobuf.js +2 -2
  152. package/dist/protobuf.js.map +1 -1
  153. package/dist/session/_internal/acquire.d.ts +4 -6
  154. package/dist/session/_internal/acquire.d.ts.map +1 -1
  155. package/dist/session/_internal/acquire.js +40 -50
  156. package/dist/session/_internal/acquire.js.map +1 -1
  157. package/dist/session/_internal/cleanup.d.ts +2 -1
  158. package/dist/session/_internal/cleanup.d.ts.map +1 -1
  159. package/dist/session/_internal/cleanup.js +23 -15
  160. package/dist/session/_internal/cleanup.js.map +1 -1
  161. package/dist/session/_internal/lifecycle.d.ts +5 -0
  162. package/dist/session/_internal/lifecycle.d.ts.map +1 -1
  163. package/dist/session/_internal/lifecycle.js +16 -6
  164. package/dist/session/_internal/lifecycle.js.map +1 -1
  165. package/dist/session/_internal/remote.d.ts.map +1 -1
  166. package/dist/session/_internal/remote.js +16 -7
  167. package/dist/session/_internal/remote.js.map +1 -1
  168. package/dist/session/_internal/uploads.d.ts +4 -1
  169. package/dist/session/_internal/uploads.d.ts.map +1 -1
  170. package/dist/session/_internal/uploads.js +25 -27
  171. package/dist/session/_internal/uploads.js.map +1 -1
  172. package/dist/session/commands.d.ts +1 -21
  173. package/dist/session/commands.d.ts.map +1 -1
  174. package/dist/session/commands.js +1 -12
  175. package/dist/session/commands.js.map +1 -1
  176. package/dist/session/files.d.ts +10 -2
  177. package/dist/session/files.d.ts.map +1 -1
  178. package/dist/session/files.js +11 -16
  179. package/dist/session/files.js.map +1 -1
  180. package/dist/session/index.d.ts +6 -6
  181. package/dist/session/index.d.ts.map +1 -1
  182. package/dist/session/index.js.map +1 -1
  183. package/dist/session/media.d.ts +53 -6
  184. package/dist/session/media.d.ts.map +1 -1
  185. package/dist/session/recorder.d.ts +24 -0
  186. package/dist/session/recorder.d.ts.map +1 -0
  187. package/dist/session/recorder.js +19 -0
  188. package/dist/session/recorder.js.map +1 -0
  189. package/dist/session.d.ts +5 -4
  190. package/dist/session.d.ts.map +1 -1
  191. package/dist/session.js +213 -110
  192. package/dist/session.js.map +1 -1
  193. package/dist/simulation/_internal/source.d.ts.map +1 -1
  194. package/dist/simulation/_internal/source.js +57 -48
  195. package/dist/simulation/_internal/source.js.map +1 -1
  196. package/dist/simulation/index.d.ts +4 -5
  197. package/dist/simulation/index.d.ts.map +1 -1
  198. package/dist/simulation/index.js +3 -4
  199. package/dist/simulation/index.js.map +1 -1
  200. package/dist/simulation/types.d.ts +16 -2
  201. package/dist/simulation/types.d.ts.map +1 -1
  202. package/dist/stats.d.ts +19 -0
  203. package/dist/stats.d.ts.map +1 -1
  204. package/dist/stats.js +79 -8
  205. package/dist/stats.js.map +1 -1
  206. package/package.json +5 -4
  207. package/notices/owned-webrtc/Effect-MIT.txt +0 -21
  208. package/notices/owned-webrtc/IETF.txt +0 -43
  209. package/notices/owned-webrtc/LICENSE +0 -21
  210. package/notices/owned-webrtc/UPSTREAM.md +0 -20
  211. package/notices/owned-webrtc/VP8-ADAPTATION.md +0 -32
  212. package/notices/owned-webrtc/VP8-AUTHORS.txt +0 -42
  213. package/notices/owned-webrtc/VP8-LICENSE.txt +0 -25
  214. package/notices/owned-webrtc/VP8-PATENTS.txt +0 -21
  215. package/notices/owned-webrtc/Werift-MIT.txt +0 -21
  216. package/notices/owned-webrtc/libvpx-v1.12.0-LICENSE.txt +0 -28
  217. package/notices/owned-webrtc/libvpx-v1.12.0-PATENTS.txt +0 -22
  218. package/notices/owned-webrtc/rfc3711.txt +0 -3139
  219. package/notices/owned-webrtc/str0m-MIT.txt +0 -7
@@ -1,13 +1,12 @@
1
- import * as Context from "effect/Context";
2
1
  import * as Effect from "effect/Effect";
3
2
  import * as Layer from "effect/Layer";
4
3
  import { make as orchestrate } from "../orchestration/renewal.js";
5
- import { Engine, Handle, Media } from "../orchestration/types.js";
4
+ import { handleContext } from "../orchestration/types.js";
6
5
  import { source } from "./_internal/source.js";
7
6
  export { source } from "./_internal/source.js";
8
7
  /** Unpaid production scheduling with the same explicit orchestration policy. */
9
8
  export const make = (options = {}) => orchestrate({
10
- open: source(options).pipe(Effect.map((value) => ({ source: value, maxSeconds: Infinity }))),
9
+ open: source(options).pipe(Effect.map((value) => ({ source: value, lifetime: "Infinity" }))),
11
10
  });
12
- export const layerSim = (options = {}) => Layer.effectContext(make(options).pipe(Effect.map((handle) => Context.make(Engine, handle.engine).pipe(Context.add(Media, handle.media), Context.add(Handle, handle)))));
11
+ export const layerSim = (options = {}) => Layer.effectContext(Effect.map(make(options), handleContext));
13
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,gFAAgF;AAChF,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,OAAO,GAAe,EAAE,EAC+C,EAAE,CACzE,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;CAC7F,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAO,GAAe,EAAE,EAC2C,EAAE,CACrE,KAAK,CAAC,aAAa,CACjB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAChB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACtC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAChC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAC5B,CACF,CACF,CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,gFAAgF;AAChF,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,OAAO,GAAe,EAAE,EACoE,EAAE,CAC9F,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;CAC7F,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAO,GAAe,EAAE,EACgE,EAAE,CAC1F,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type * as Duration from "effect/Duration";
1
2
  import type * as Effect from "effect/Effect";
2
3
  import type { ModelProfile } from "../h3/profile.js";
3
4
  import type { LocalClipRecord } from "../orchestration/types.js";
@@ -11,13 +12,26 @@ export interface SimulatedMediaSink {
11
12
  readonly audio: (frame: AudioFrame) => Effect.Effect<void>;
12
13
  }
13
14
  export interface SimOptions {
15
+ /** Simulated build time per second of clip, 0.1 by default. */
14
16
  readonly buildRatio?: number;
15
- readonly buildFixedMs?: number;
17
+ /**
18
+ * Simulated build time added to every clip's, zero by default. A bare number
19
+ * is milliseconds.
20
+ */
21
+ readonly fixedBuildTime?: Duration.Input | undefined;
16
22
  readonly profile?: ModelProfile;
17
23
  readonly queueLimit?: number;
18
24
  readonly playoutLimit?: number;
19
25
  readonly timing?: "measured" | "unknown";
20
- readonly playoutGapMs?: number;
26
+ /**
27
+ * A pause between presented clips, zero by default. A bare number is
28
+ * milliseconds.
29
+ */
30
+ readonly playoutGap?: Duration.Input | undefined;
31
+ /** @deprecated Removed in 0.3.0: use `fixedBuildTime` (a bare number is milliseconds). */
32
+ readonly buildFixedMs?: never;
33
+ /** @deprecated Removed in 0.3.0: use `playoutGap` (a bare number is milliseconds). */
34
+ readonly playoutGapMs?: never;
21
35
  readonly faults?: SimulatedFaults;
22
36
  /** Completes before Ready and may extend duration to fit locally rendered speech. */
23
37
  readonly build?: (record: LocalClipRecord) => Effect.Effect<number, Error>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/simulation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3E,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/simulation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IACjD,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3E,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrE"}
package/dist/stats.d.ts CHANGED
@@ -2,6 +2,12 @@ export interface Statistics {
2
2
  /** Injected monotonic clock in milliseconds, not wall time or an RTC sample timestamp. */
3
3
  readonly sampledAtMs: number;
4
4
  readonly generation: bigint;
5
+ /**
6
+ * The candidate pair carrying the connection: the one a transport names as
7
+ * selected or else, of the pairs nominated that succeeded, the one that
8
+ * received the most since the previous sample. A pair stays nominated after
9
+ * ICE moves off it, and the native host names no selected pair.
10
+ */
5
11
  readonly pair?: {
6
12
  readonly id: string;
7
13
  readonly bytesSent?: bigint;
@@ -27,7 +33,20 @@ export interface Statistics {
27
33
  /** Browser counters are JS numbers. Unsafe integers are flagged, never falsely converted back to full precision. */
28
34
  export declare class StatsSampler {
29
35
  private baseline;
36
+ /** Each candidate pair's received bytes at the previous sample, by `pairKey`. */
37
+ private received;
38
+ /** The pair the previous sample reported, by the same key. */
39
+ private chosen;
30
40
  reset(): void;
41
+ /**
42
+ * The pair carrying the connection. A transport's `selectedCandidatePairId`
43
+ * names it where the host reports one, as browsers do. Otherwise it is the
44
+ * nominated, succeeded pair that received the most since the previous
45
+ * sample: ICE leaves a pair nominated after moving off it, and only the pair
46
+ * in use carries media and the channels. A tie keeps the pair reported
47
+ * before, and otherwise goes to the first.
48
+ */
49
+ private selectedPair;
31
50
  sample(raw: readonly unknown[], generation: bigint, atMs: number): Statistics;
32
51
  }
33
52
  //# sourceMappingURL=stats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QACtC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAC3C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;KAC5C,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAcD,oHAAoH;AACpH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,KAAK,IAAI,IAAI,CAEZ;IACD,MAAM,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAoI5E;CACF"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QACtC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAC3C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;KAC5C,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAqCD,oHAAoH;AACpH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAA6B;IAC7C,8DAA8D;IAC9D,OAAO,CAAC,MAAM,CAAqB;IACnC,KAAK,IAAI,IAAI,CAIZ;IACD;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IA6CpB,MAAM,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAiI5E;CACF"}
package/dist/stats.js CHANGED
@@ -1,21 +1,93 @@
1
+ import * as Predicate from "effect/Predicate";
1
2
  import { ReactorError } from "./errors.js";
2
- import { isRecord } from "./json.js";
3
3
  const number = (u) => typeof u === "number" && Number.isFinite(u) ? u : undefined;
4
4
  const positive = (u) => {
5
5
  const n = number(u);
6
6
  return n !== undefined && n > 0 ? n : undefined;
7
7
  };
8
8
  const text = (u) => (typeof u === "string" ? u : undefined);
9
+ /** A byte counter as a bigint, when it is one exactly; only for choosing a pair. */
10
+ const bytes = (u) => typeof u === "bigint"
11
+ ? u
12
+ : typeof u === "number" && Number.isSafeInteger(u) && u >= 0
13
+ ? BigInt(u)
14
+ : undefined;
15
+ const isPair = (e) => e.type === "candidate-pair" && typeof e.id === "string";
16
+ /**
17
+ * One pair across the samples of a generation. The native host names pairs by
18
+ * their position in its report, which shifts when a pair is added or dropped.
19
+ * A pair's priority, fixed by its two candidates, and its local candidate
20
+ * identify it instead; where a host reports no priority, its id does.
21
+ */
22
+ const pairKey = (generation, pair, byId) => {
23
+ const priority = pair.priority;
24
+ if (typeof priority !== "bigint" && typeof priority !== "number")
25
+ return `${generation}:id:${pair.id}`;
26
+ const local = byId.get(text(pair.localCandidateId) ?? "");
27
+ return `${generation}:priority:${priority}:${text(local?.candidateType) ?? ""}:${text(local?.relayProtocol) ?? ""}`;
28
+ };
9
29
  /** Browser counters are JS numbers. Unsafe integers are flagged, never falsely converted back to full precision. */
10
30
  export class StatsSampler {
11
31
  baseline;
32
+ /** Each candidate pair's received bytes at the previous sample, by `pairKey`. */
33
+ received = new Map();
34
+ /** The pair the previous sample reported, by the same key. */
35
+ chosen;
12
36
  reset() {
13
37
  this.baseline = undefined;
38
+ this.received = new Map();
39
+ this.chosen = undefined;
40
+ }
41
+ /**
42
+ * The pair carrying the connection. A transport's `selectedCandidatePairId`
43
+ * names it where the host reports one, as browsers do. Otherwise it is the
44
+ * nominated, succeeded pair that received the most since the previous
45
+ * sample: ICE leaves a pair nominated after moving off it, and only the pair
46
+ * in use carries media and the channels. A tie keeps the pair reported
47
+ * before, and otherwise goes to the first.
48
+ */
49
+ selectedPair(entries, byId, generation) {
50
+ const pairs = entries.filter(isPair);
51
+ const key = (pair) => pairKey(generation, pair, byId);
52
+ const previous = this.received, before = this.chosen;
53
+ this.received = new Map(pairs.flatMap((pair) => {
54
+ const received = bytes(pair.bytesReceived);
55
+ return received === undefined ? [] : [[key(pair), received]];
56
+ }));
57
+ let chosen;
58
+ for (const transport of entries) {
59
+ if (transport.type !== "transport")
60
+ continue;
61
+ const named = byId.get(text(transport.selectedCandidatePairId) ?? "");
62
+ if (named !== undefined && isPair(named)) {
63
+ chosen = named;
64
+ break;
65
+ }
66
+ }
67
+ let most = -1n;
68
+ if (chosen === undefined)
69
+ for (const pair of pairs) {
70
+ if (pair.nominated !== true || pair.state !== "succeeded")
71
+ continue;
72
+ const received = bytes(pair.bytesReceived), prior = previous.get(key(pair));
73
+ // A count below the last one belongs to a reset pair: it grew by all of it.
74
+ const growth = received === undefined
75
+ ? 0n
76
+ : prior === undefined || received < prior
77
+ ? received
78
+ : received - prior;
79
+ if (growth > most || (growth === most && key(pair) === before)) {
80
+ chosen = pair;
81
+ most = growth;
82
+ }
83
+ }
84
+ this.chosen = chosen === undefined ? undefined : key(chosen);
85
+ return chosen;
14
86
  }
15
87
  sample(raw, generation, atMs) {
16
88
  if (!Number.isFinite(atMs) || raw.length > 4096)
17
- throw new ReactorError("Protocol", "invalid statistics sample/bound");
18
- const warnings = [], entries = raw.filter(isRecord), byId = new Map(entries.flatMap((e) => (typeof e.id === "string" ? [[e.id, e]] : [])));
89
+ throw ReactorError.fromCode("Protocol", "invalid statistics sample/bound");
90
+ const warnings = [], entries = raw.filter(Predicate.isObject), byId = new Map(entries.flatMap((e) => (typeof e.id === "string" ? [[e.id, e]] : [])));
19
91
  const counter = (u, field, signed = false) => {
20
92
  if (u === undefined)
21
93
  return undefined;
@@ -31,9 +103,9 @@ export class StatsSampler {
31
103
  }
32
104
  return n;
33
105
  };
34
- const pair = entries.find((e) => e.type === "candidate-pair" && e.nominated === true && e.state === "succeeded");
106
+ const pair = this.selectedPair(entries, byId, generation);
35
107
  let pairResult, rates;
36
- if (pair !== undefined && typeof pair.id === "string") {
108
+ if (pair !== undefined) {
37
109
  const sent = counter(pair.bytesSent, "pair.bytesSent"), received = counter(pair.bytesReceived, "pair.bytesReceived");
38
110
  const local = byId.get(text(pair.localCandidateId) ?? ""), remote = byId.get(text(pair.remoteCandidateId) ?? "");
39
111
  const localType = text(local?.candidateType), remoteType = text(remote?.candidateType);
@@ -48,9 +120,8 @@ export class StatsSampler {
48
120
  ...(incoming === undefined ? {} : { availableIncomingBitrate: incoming }),
49
121
  };
50
122
  if (sent !== undefined && received !== undefined) {
51
- const key = `${generation}:${pair.id}`, previous = this.baseline;
52
- if (previous !== undefined &&
53
- previous.key === key &&
123
+ const key = pairKey(generation, pair, byId), previous = this.baseline;
124
+ if (previous?.key === key &&
54
125
  atMs >= previous.at &&
55
126
  sent >= previous.sent &&
56
127
  received >= previous.received) {
package/dist/stats.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reactor-effect-client",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Scoped Reactor sessions, H3 provider state and explicit orchestration over Effect",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -56,15 +56,16 @@
56
56
  "devDependencies": {
57
57
  "@effect/platform-bun": "4.0.0-rc.115",
58
58
  "@effect/platform-node": "4.0.0-rc.115",
59
- "@types/bun": "1.4.2",
59
+ "@effect/vitest": "4.0.0-rc.115",
60
60
  "@types/node": "22.20.2",
61
61
  "effect": "4.0.0-rc.115",
62
- "reactor-effect-test-kit": "0.2.0"
62
+ "reactor-effect-test-kit": "0.3.0",
63
+ "vitest": "5.0.0"
63
64
  },
64
65
  "scripts": {
65
66
  "build": "rm -rf dist && tsc -p tsconfig.build.json",
66
67
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit",
67
- "test": "bun test",
68
+ "test": "vitest run",
68
69
  "generate:wire": "python3 wire/generate.py",
69
70
  "generate:check": "python3 wire/generate.py --check"
70
71
  },
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 Effectful Technologies Inc
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,43 +0,0 @@
1
- IETF specification/code-component notices
2
-
3
- RFC 5769 test vectors used in tests/run.ts:
4
- Copyright (c) 2010 IETF Trust and the persons identified as the document authors.
5
- All rights reserved. Author: Remi Denis-Courmont.
6
- Original: https://www.rfc-editor.org/rfc/rfc5769.html (sections 2.1, 2.2).
7
-
8
- This document is subject to BCP 78 and the IETF Trust's Legal Provisions
9
- Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect
10
- on the date of publication. Code Components extracted from the document must
11
- include the Simplified BSD License text as described in Section 4.e of the
12
- Trust Legal Provisions and are provided without warranty as described in it.
13
-
14
- Simplified BSD License
15
-
16
- Redistribution and use in source and binary forms, with or without
17
- modification, are permitted provided that the following conditions are met:
18
-
19
- 1. Redistributions of source code must retain the above copyright notice,
20
- this list of conditions and the following disclaimer.
21
- 2. Redistributions in binary form must reproduce the above copyright notice,
22
- this list of conditions and the following disclaimer in the documentation
23
- and/or other materials provided with the distribution.
24
-
25
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
29
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
- POSSIBILITY OF SUCH DAMAGE.
36
-
37
- RFC 3711 Appendix B.3 vector values are used in tests/run.ts. The complete
38
- unaltered supplied RFC, including its original 2004 notices, is retained as
39
- rfc3711.txt. No rights in the RFC itself are asserted by this project.
40
-
41
- Production protocol code is newly authored; the original specifications are
42
- normative references, not a vendored protocol engine. The other RFCs used are
43
- listed with section links in DESIGN.md.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 effect-webrtc-standalone contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,20 +0,0 @@
1
- # Attribution and dependency boundaries
2
-
3
- Production code under `src/` is newly authored for this task from the protocol specifications, informed by inspection of the following pinned sources. No Werift or str0m implementation is imported, bundled or invoked by that code.
4
-
5
- | Reference | Pin | Use and obligation |
6
- | --- | --- | --- |
7
- | Effect | `4.0.0-rc.115`; source `4a05d4914fa2327a42bd75fe77c22c188becf3b4` | The sole production package dependency; MIT notice retained. Socket/Scope/Queue/Clock/Worker patterns studied, not vendored adapters. |
8
- | Werift | `2174d88ece8ecdc6e804e9303028496833f1fb2e` | ICE/DTLS/SCTP/RTP/SRTP source research. Unmodified focused SCTP/common/SRTP reference files are used ONLY under `oracles/werift`, with MIT notice and per-source SHA-256 manifest. Not in the production tarball. |
9
- | str0m | `1183e271b40a34b387a29cfad10696aae0c8dcad` | `lib.rs` / `examples/http-post.rs` input/output/deadline architecture studied. No Rust code, compiled library, or WASM adopted. Supplied MIT notice retained. |
10
- | IETF | RFCs in DESIGN.md | Wire algorithms are implemented, not replaced by library calls. RFC 5769 and RFC 3711 vector notices are retained. |
11
-
12
- The source archive includes offline development tooling: TypeScript 5.9.3, the real Effect package, official `@types/node` 25.1.0 and its `undici-types` declarations. These declarations are not runtime implementations or shims. Their original package manifests/licenses are retained. The copied Node declarations are deliberately **not** evidence of Bun functionality.
13
-
14
- The independent oracle additionally uses Python/pyOpenSSL/cryptography/audioop and a Node child running the unmodified Werift SCTP/SRTP modules. The development copy of `debug` is 4.4.3 (available offline), rather than Werift's manifest pin 4.4.0; it affects logging and is disclosed rather than represented as a fully reproduced Werift install. Its dependency `ms` and both original licenses are retained under `oracles/werift/node_modules`. OpenSSL and Python native codecs are test tools only. None participates in the standalone package's production execution.
15
-
16
- No entire external WebRTC stack is hidden in the artifact. Package installation files are explicitly limited by `package.json`; the production archive contains only `dist/src`, package metadata, this README/license material, and notices. Run `scripts/lint.mjs` and `scripts/clean-consumer.mjs` to inspect that distinction.
17
-
18
- ## VP8 in revision 0.0.3
19
-
20
- See [VP8-ADAPTATION.md](VP8-ADAPTATION.md) for the focused RFC 6386 decoder algorithms and normative tables adapted into owned TypeScript, the tagged WebM prediction-clamp cross-check, and their complete retained BSD licenses/patent grants. No additional production package or engine is added.
@@ -1,32 +0,0 @@
1
- # Owned VP8 adaptation and provenance
2
-
3
- The scalar decoder in `src/vp8*.ts` is TypeScript code owned and executed by this package. It is **not a binding, whole-engine bundle, native/WASM translation or subprocess**. It reads ordinary VP8 samples, arithmetic-decodes syntax/tokens, reconstructs reference pictures and returns freshly allocated I420 planes. It never reads fixtures or expected outputs. `vp8-tables.ts` contains normative probability, tree and quantization constants, not pictures.
4
-
5
- ## RFC 6386 code components
6
-
7
- The decoding guide and Attachment One source were supplied unchanged in `codec-reference-inputs.zip`. The source ZIP retains the entire RFC text under `references/codecs/rfc6386.txt`; see its embedded original notices. Focused algorithms/tables were ported from:
8
-
9
- | Reference subsystem | TypeScript adaptation |
10
- | --- | --- |
11
- | `bool_decoder.h`, `idct_add.c` | `vp8-core.ts`: bool arithmetic decoding, inverse DCT and Walsh-Hadamard |
12
- | `modemv.c`, `modemv_data.h` | `vp8-modes.ts`, `vp8-tables.ts`: mode probabilities, motion predictors, split vectors and sign bias |
13
- | `tokens.c`, `dequant_data.h`, `vp8_prob_data.h` | `vp8-tokens.ts`, `vp8-tables.ts`: coefficient contexts, trees, dequantization |
14
- | `predict.c` | `vp8-intra.ts`, `vp8-predict.ts`: intra prediction, subpixel motion compensation, edge extension |
15
- | `dixie_loopfilter.c` | `vp8-filter.ts`: simple/normal filtering and segment/reference/mode deltas |
16
- | `dixie.c` and decoding chapters | `vp8.ts`: headers, partitions, segmentation, entropy persistence, reference refresh/copies and output crop |
17
-
18
- The original Google copyright, BSD license, patent grant and authors from Attachment One are retained as `VP8-LICENSE.txt`, `VP8-PATENTS.txt`, `VP8-AUTHORS.txt`. The adaptation replaces C pointers and storage with bounded owned typed arrays, adds bounds/work budgets and explicit invalidation/close. No upstream build system, platform abstraction, native wrapper or codec dependency is imported.
19
-
20
- ## Prediction-only motion clamping cross-check
21
-
22
- `predictionMotion` and its call placement were checked/adapted against WebM's **libvpx v1.12.0** `vp8/common/reconinter.c`, specifically the luma/chroma unrestricted-motion-vector boundary helpers and prediction copies. Decoded MV context must not be overwritten when limiting a temporary prediction vector. The footprint uses the stated 19/18-pixel limits, followed by chroma rounding, not a blanket change to stored NEWMV values.
23
-
24
- Source: https://github.com/webmproject/libvpx/blob/v1.12.0/vp8/common/reconinter.c
25
-
26
- This focused helper adaptation retains `libvpx-v1.12.0-LICENSE.txt` and `libvpx-v1.12.0-PATENTS.txt`. Attribution: Copyright (c) 2010, The WebM Project authors. Contributors are credited in the upstream AUTHORS file: https://github.com/webmproject/libvpx/blob/v1.12.0/AUTHORS . These license/grant texts were transcribed from the official tagged files returned by the web reader; a container raw download failed DNS, so no byte-for-byte source-download claim is made. `references/codecs/libvpx-v1.12.0/provenance.json` retains those download failures.
27
-
28
- ## Protocol and test material
29
-
30
- RFC 7741 is retained unchanged under `references/codecs/rfc7741.txt`; `video.ts` implements the specified VP8 payload descriptor and owned frame reconstruction. Existing protocol notices still apply. The BSD terms are shipped with both source and binary package; the package license is `MIT AND BSD-3-Clause`.
31
-
32
- Original deterministic synthetic fixture inputs/expected outputs are **development-only**. Supplied fixtures retain their generation commands/offsets/hashes. `scripts/generate-vp8-oracles.py` creates additional mathematical sources and uses local FFmpeg/libvpx **only as independent development oracles**; neither tool nor generated YUV is reachable from the production module graph or included in the production tarball. Bundled Effect, TypeScript and oracle reference licenses remain separate. This notice is not an assertion of comprehensive patent clearance or full codec conformance.
@@ -1,42 +0,0 @@
1
- Aaron Watry <awatry@gmail.com>
2
- Adrian Grange <agrange@google.com>
3
- Alex Converse <alex.converse@gmail.com>
4
- Andoni Morales Alastruey <ylatuya@gmail.com>
5
- Andres Mejia <mcitadel@gmail.com>
6
- Attila Nagy <attilanagy@google.com>
7
- Fabio Pedretti <fabio.ped@libero.it>
8
- Frank Galligan <fgalligan@google.com>
9
- Fredrik Soederquist <fs@opera.com>
10
- Fritz Koenig <frkoenig@google.com>
11
- Gaute Strokkenes <gaute.strokkenes@broadcom.com>
12
- Giuseppe Scrivano <gscrivano@gnu.org>
13
- Guillermo Ballester Valor <gbvalor@gmail.com>
14
- Henrik Lundin <hlundin@google.com>
15
- James Berry <jamesberry@google.com>
16
- James Zern <jzern@google.com>
17
- Jan Kratochvil <jan.kratochvil@redhat.com>
18
- Jeff Muizelaar <jmuizelaar@mozilla.com>
19
- Jim Bankoski <jimbankoski@google.com>
20
- Johann Koenig <johannkoenig@google.com>
21
- John Koleszar <jkoleszar@google.com>
22
- Justin Clift <justin@salasaga.org>
23
- Justin Lebar <justin.lebar@gmail.com>
24
- Luca Barbato <lu_zero@gentoo.org>
25
- Makoto Kato <makoto.kt@gmail.com>
26
- Martin Ettl <ettl.martin78@googlemail.com>
27
- Michael Kohler <michaelkohler@live.com>
28
- Mikhal Shemer <mikhal@google.com>
29
- Pascal Massimino <pascal.massimino@gmail.com>
30
- Patrik Westin <patrik.westin@gmail.com>
31
- Paul Wilkins <paulwilkins@google.com>
32
- Pavol Rusnak <stick@gk2.sk>
33
- Philip Jaegenstedt <philipj@opera.com>
34
- Scott LaVarnway <slavarnway@google.com>
35
- Tero Rintaluoma <teror@google.com>
36
- Timothy B. Terriberry <tterribe@xiph.org>
37
- Tom Finegan <tomfinegan@google.com>
38
- Yaowu Xu <yaowu@google.com>
39
- Yunqing Wang <yunqingwang@google.com>
40
- Google Inc.
41
- The Mozilla Foundation
42
- The Xiph.Org Foundation
@@ -1,25 +0,0 @@
1
- Copyright (c) 2010, 2011, Google Inc. All rights reserved.
2
- Redistribution and use in source and binary forms, with or without
3
- modification, are permitted provided that the following conditions
4
- are met:
5
- o Redistributions of source code must retain the above copyright
6
- notice, this list of conditions and the following disclaimer.
7
- o Redistributions in binary form must reproduce the above copyright
8
- notice, this list of conditions and the following disclaimer in
9
- the documentation and/or other materials provided with the
10
- distribution.
11
- o Neither the name of Google nor the names of its contributors may
12
- be used to endorse or promote products derived from this software
13
- without specific prior written permission.
14
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
19
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
20
- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
21
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22
- AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
24
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
- POSSIBILITY OF SUCH DAMAGE.
@@ -1,21 +0,0 @@
1
- Additional IP Rights Grant (Patents)
2
- "This implementation" means the copyrightable works distributed by
3
- Google as part of the WebM Project.
4
- Google hereby grants to you a perpetual, worldwide, non-exclusive,
5
- no-charge, royalty-free, irrevocable (except as stated in this
6
- section) patent license to make, have made, use, offer to sell, sell,
7
- import, transfer, and otherwise run, modify and propagate the
8
- contents of this implementation of VP8, where such license applies
9
- only to those patent claims, both currently owned by Google and
10
- acquired in the future, licensable by Google that are necessarily
11
- infringed by this implementation of VP8. This grant does not include
12
- claims that would be infringed only as a consequence of further
13
- modification of this implementation. If you or your agent or
14
- exclusive licensee institute or order or agree to the institution of
15
- patent litigation against any entity (including a cross-claim or
16
- counterclaim in a lawsuit) alleging that this implementation of VP8
17
- or any code incorporated within this implementation of VP8
18
- constitutes direct or contributory patent infringement, or inducement
19
- of patent infringement, then any patent rights granted to you under
20
- this License for this implementation of VP8 shall terminate as of the
21
- date such litigation is filed.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2020 shinyoshiaki
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,28 +0,0 @@
1
- Copyright (c) 2010, The WebM Project authors. All rights reserved.
2
-
3
- Redistribution and use in source and binary forms, with or without
4
- modification, are permitted provided that the following conditions are
5
- met:
6
-
7
- * Redistributions of source code must retain the above copyright
8
- notice, this list of conditions and the following disclaimer.
9
- * Redistributions in binary form must reproduce the above copyright
10
- notice, this list of conditions and the following disclaimer in
11
- the documentation and/or other materials provided with the
12
- distribution.
13
-
14
- * Neither the name of Google, nor the WebM Project, nor the names
15
- of its contributors may be used to endorse or promote products
16
- derived from this software without specific prior written
17
- permission.
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,22 +0,0 @@
1
- Additional IP Rights Grant (Patents)
2
- ------------------------------------
3
-
4
- "These implementations" means the copyrightable works that implement the WebM
5
- codecs distributed by Google as part of the WebM Project.
6
- Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
7
- royalty-free, irrevocable (except as stated in this section) patent license to
8
- make, have made, use, offer to sell, sell, import, transfer, and otherwise
9
- run, modify and propagate the contents of these implementations of WebM, where
10
- such license applies only to those patent claims, both currently owned by
11
- Google and acquired in the future, licensable by Google that are necessarily
12
- infringed by these implementations of WebM. This grant does not include claims
13
- that would be infringed only as a consequence of further modification of these
14
- implementations. If you or your agent or exclusive licensee institute or order
15
- or agree to the institution of patent litigation or any other patent
16
- enforcement activity against any entity (including a cross-claim or
17
- counterclaim in a lawsuit) alleging that any of these implementations of WebM
18
- or any code incorporated within any of these implementations of WebM
19
- constitute direct or contributory patent infringement, or inducement of
20
- patent infringement, then any patent rights granted to you under this License
21
- for these implementations of WebM shall terminate as of the date such
22
- litigation is filed.