reactor-effect-client 0.7.1 → 0.8.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 (514) hide show
  1. package/NOTICE +7 -2
  2. package/README.md +103 -141
  3. package/dist/Coordinator.d.ts +382 -0
  4. package/dist/Coordinator.d.ts.map +1 -0
  5. package/dist/Coordinator.js +732 -0
  6. package/dist/Coordinator.js.map +1 -0
  7. package/dist/H3.d.ts +159 -0
  8. package/dist/H3.d.ts.map +1 -0
  9. package/dist/H3.js +21 -0
  10. package/dist/H3.js.map +1 -0
  11. package/dist/H3Source.d.ts +93 -0
  12. package/dist/H3Source.d.ts.map +1 -0
  13. package/dist/H3Source.js +401 -0
  14. package/dist/H3Source.js.map +1 -0
  15. package/dist/LocalSource.d.ts +68 -0
  16. package/dist/LocalSource.d.ts.map +1 -0
  17. package/dist/LocalSource.js +354 -0
  18. package/dist/LocalSource.js.map +1 -0
  19. package/dist/Media.d.ts +106 -0
  20. package/dist/Media.d.ts.map +1 -0
  21. package/dist/Media.js +16 -0
  22. package/dist/Media.js.map +1 -0
  23. package/dist/Peer.d.ts +134 -0
  24. package/dist/Peer.d.ts.map +1 -0
  25. package/dist/Peer.js +57 -0
  26. package/dist/Peer.js.map +1 -0
  27. package/dist/Playout.d.ts +724 -0
  28. package/dist/Playout.d.ts.map +1 -0
  29. package/dist/Playout.js +28 -0
  30. package/dist/Playout.js.map +1 -0
  31. package/dist/Reactor.d.ts +135 -0
  32. package/dist/Reactor.d.ts.map +1 -0
  33. package/dist/Reactor.js +158 -0
  34. package/dist/Reactor.js.map +1 -0
  35. package/dist/ReactorError.d.ts +331 -0
  36. package/dist/ReactorError.d.ts.map +1 -0
  37. package/dist/ReactorError.js +316 -0
  38. package/dist/ReactorError.js.map +1 -0
  39. package/dist/ReactorTest.d.ts +383 -0
  40. package/dist/ReactorTest.d.ts.map +1 -0
  41. package/dist/ReactorTest.js +317 -0
  42. package/dist/ReactorTest.js.map +1 -0
  43. package/dist/Session.d.ts +314 -0
  44. package/dist/Session.d.ts.map +1 -0
  45. package/dist/Session.js +51 -0
  46. package/dist/Session.js.map +1 -0
  47. package/dist/index.d.ts +12 -22
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +12 -11
  50. package/dist/index.js.map +1 -1
  51. package/dist/internal/correlator.d.ts +46 -0
  52. package/dist/internal/correlator.d.ts.map +1 -0
  53. package/dist/internal/correlator.js +150 -0
  54. package/dist/internal/correlator.js.map +1 -0
  55. package/dist/internal/deadline.d.ts +24 -0
  56. package/dist/internal/deadline.d.ts.map +1 -0
  57. package/dist/internal/deadline.js +44 -0
  58. package/dist/internal/deadline.js.map +1 -0
  59. package/dist/{h3/_internal/contracts.d.ts → internal/h3/commands.d.ts} +39 -33
  60. package/dist/internal/h3/commands.d.ts.map +1 -0
  61. package/dist/internal/h3/commands.js +128 -0
  62. package/dist/internal/h3/commands.js.map +1 -0
  63. package/dist/{h3 → internal/h3}/messages.d.ts +16 -11
  64. package/dist/internal/h3/messages.d.ts.map +1 -0
  65. package/dist/{h3 → internal/h3}/messages.js +19 -31
  66. package/dist/internal/h3/messages.js.map +1 -0
  67. package/dist/internal/h3/operations.d.ts +145 -0
  68. package/dist/internal/h3/operations.d.ts.map +1 -0
  69. package/dist/internal/h3/operations.js +284 -0
  70. package/dist/internal/h3/operations.js.map +1 -0
  71. package/dist/{h3 → internal/h3}/profile.d.ts +63 -65
  72. package/dist/internal/h3/profile.d.ts.map +1 -0
  73. package/dist/{h3 → internal/h3}/profile.js +39 -39
  74. package/dist/internal/h3/profile.js.map +1 -0
  75. package/dist/internal/h3/provider.d.ts +14 -0
  76. package/dist/internal/h3/provider.d.ts.map +1 -0
  77. package/dist/internal/h3/provider.js +672 -0
  78. package/dist/internal/h3/provider.js.map +1 -0
  79. package/dist/internal/h3/references.d.ts +68 -0
  80. package/dist/internal/h3/references.d.ts.map +1 -0
  81. package/dist/internal/h3/references.js +339 -0
  82. package/dist/internal/h3/references.js.map +1 -0
  83. package/dist/internal/h3/request.d.ts +56 -0
  84. package/dist/internal/h3/request.d.ts.map +1 -0
  85. package/dist/internal/h3/request.js +70 -0
  86. package/dist/internal/h3/request.js.map +1 -0
  87. package/dist/internal/h3/state.d.ts +120 -0
  88. package/dist/internal/h3/state.d.ts.map +1 -0
  89. package/dist/internal/h3/state.js +270 -0
  90. package/dist/internal/h3/state.js.map +1 -0
  91. package/dist/{Submission.d.ts → internal/h3/submission.d.ts} +1 -3
  92. package/dist/internal/h3/submission.d.ts.map +1 -0
  93. package/dist/{Submission.js → internal/h3/submission.js} +1 -9
  94. package/dist/internal/h3/submission.js.map +1 -0
  95. package/dist/internal/hub.d.ts +32 -0
  96. package/dist/internal/hub.d.ts.map +1 -0
  97. package/dist/internal/hub.js +92 -0
  98. package/dist/internal/hub.js.map +1 -0
  99. package/dist/internal/playout/errors.d.ts +51 -0
  100. package/dist/internal/playout/errors.d.ts.map +1 -0
  101. package/dist/internal/playout/errors.js +40 -0
  102. package/dist/internal/playout/errors.js.map +1 -0
  103. package/dist/internal/playout/policy.d.ts +559 -0
  104. package/dist/internal/playout/policy.d.ts.map +1 -0
  105. package/dist/internal/playout/policy.js +2338 -0
  106. package/dist/internal/playout/policy.js.map +1 -0
  107. package/dist/internal/playout/runtime.d.ts +28 -0
  108. package/dist/internal/playout/runtime.d.ts.map +1 -0
  109. package/dist/internal/playout/runtime.js +766 -0
  110. package/dist/internal/playout/runtime.js.map +1 -0
  111. package/dist/internal/playout/tag.d.ts +14 -0
  112. package/dist/internal/playout/tag.d.ts.map +1 -0
  113. package/dist/internal/playout/tag.js +43 -0
  114. package/dist/internal/playout/tag.js.map +1 -0
  115. package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts +55 -0
  116. package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts.map +1 -0
  117. package/dist/internal/proto/reactor_wire/v1/common_pb.js +42 -0
  118. package/dist/internal/proto/reactor_wire/v1/common_pb.js.map +1 -0
  119. package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts +160 -0
  120. package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts.map +1 -0
  121. package/dist/internal/proto/reactor_wire/v1/control_pb.js +21 -0
  122. package/dist/internal/proto/reactor_wire/v1/control_pb.js.map +1 -0
  123. package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts +89 -0
  124. package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts.map +1 -0
  125. package/dist/internal/proto/reactor_wire/v1/data_pb.js +20 -0
  126. package/dist/internal/proto/reactor_wire/v1/data_pb.js.map +1 -0
  127. package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts +85 -0
  128. package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts.map +1 -0
  129. package/dist/internal/proto/reactor_wire/v1/model_pb.js +24 -0
  130. package/dist/internal/proto/reactor_wire/v1/model_pb.js.map +1 -0
  131. package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts +190 -0
  132. package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts.map +1 -0
  133. package/dist/internal/proto/reactor_wire/v1/platform_pb.js +54 -0
  134. package/dist/internal/proto/reactor_wire/v1/platform_pb.js.map +1 -0
  135. package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts +88 -0
  136. package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts.map +1 -0
  137. package/dist/internal/proto/reactor_wire/v1/track_pb.js +33 -0
  138. package/dist/internal/proto/reactor_wire/v1/track_pb.js.map +1 -0
  139. package/dist/internal/queue.d.ts +4 -0
  140. package/dist/internal/queue.d.ts.map +1 -0
  141. package/dist/{_internal → internal}/queue.js +0 -9
  142. package/dist/internal/queue.js.map +1 -0
  143. package/dist/internal/reactorTest/coordinator.d.ts +5 -0
  144. package/dist/internal/reactorTest/coordinator.d.ts.map +1 -0
  145. package/dist/internal/reactorTest/coordinator.js +178 -0
  146. package/dist/internal/reactorTest/coordinator.js.map +1 -0
  147. package/dist/internal/reactorTest/faults.d.ts +172 -0
  148. package/dist/internal/reactorTest/faults.d.ts.map +1 -0
  149. package/dist/internal/reactorTest/faults.js +23 -0
  150. package/dist/internal/reactorTest/faults.js.map +1 -0
  151. package/dist/internal/reactorTest/h3.d.ts +431 -0
  152. package/dist/internal/reactorTest/h3.d.ts.map +1 -0
  153. package/dist/internal/reactorTest/h3.js +625 -0
  154. package/dist/internal/reactorTest/h3.js.map +1 -0
  155. package/dist/internal/reactorTest/media.d.ts +22 -0
  156. package/dist/internal/reactorTest/media.d.ts.map +1 -0
  157. package/dist/internal/reactorTest/media.js +34 -0
  158. package/dist/internal/reactorTest/media.js.map +1 -0
  159. package/dist/internal/reactorTest/peer.d.ts +318 -0
  160. package/dist/internal/reactorTest/peer.d.ts.map +1 -0
  161. package/dist/internal/reactorTest/peer.js +206 -0
  162. package/dist/internal/reactorTest/peer.js.map +1 -0
  163. package/dist/internal/reactorTest/playout.d.ts +34 -0
  164. package/dist/internal/reactorTest/playout.d.ts.map +1 -0
  165. package/dist/internal/reactorTest/playout.js +340 -0
  166. package/dist/internal/reactorTest/playout.js.map +1 -0
  167. package/dist/internal/reactorTest/references.d.ts +25 -0
  168. package/dist/internal/reactorTest/references.d.ts.map +1 -0
  169. package/dist/{testing/Png.js → internal/reactorTest/references.js} +50 -12
  170. package/dist/internal/reactorTest/references.js.map +1 -0
  171. package/dist/internal/reactorTest/sessions.d.ts +364 -0
  172. package/dist/internal/reactorTest/sessions.d.ts.map +1 -0
  173. package/dist/internal/reactorTest/sessions.js +592 -0
  174. package/dist/internal/reactorTest/sessions.js.map +1 -0
  175. package/dist/internal/reactorTest/timing.d.ts +13 -0
  176. package/dist/internal/reactorTest/timing.d.ts.map +1 -0
  177. package/dist/internal/reactorTest/timing.js +20 -0
  178. package/dist/internal/reactorTest/timing.js.map +1 -0
  179. package/dist/internal/recording.d.ts +52 -0
  180. package/dist/internal/recording.d.ts.map +1 -0
  181. package/dist/internal/recording.js +141 -0
  182. package/dist/internal/recording.js.map +1 -0
  183. package/dist/internal/session/connect.d.ts +34 -0
  184. package/dist/internal/session/connect.d.ts.map +1 -0
  185. package/dist/internal/session/connect.js +502 -0
  186. package/dist/internal/session/connect.js.map +1 -0
  187. package/dist/internal/session/generation.d.ts +35 -0
  188. package/dist/internal/session/generation.d.ts.map +1 -0
  189. package/dist/internal/session/generation.js +185 -0
  190. package/dist/internal/session/generation.js.map +1 -0
  191. package/dist/internal/session/ice.d.ts +23 -0
  192. package/dist/internal/session/ice.d.ts.map +1 -0
  193. package/dist/internal/session/ice.js +57 -0
  194. package/dist/internal/session/ice.js.map +1 -0
  195. package/dist/internal/session/inbound.d.ts +50 -0
  196. package/dist/internal/session/inbound.d.ts.map +1 -0
  197. package/dist/internal/session/inbound.js +202 -0
  198. package/dist/internal/session/inbound.js.map +1 -0
  199. package/dist/internal/session/model.d.ts +163 -0
  200. package/dist/internal/session/model.d.ts.map +1 -0
  201. package/dist/internal/session/model.js +78 -0
  202. package/dist/internal/session/model.js.map +1 -0
  203. package/dist/internal/session/requests.d.ts +71 -0
  204. package/dist/internal/session/requests.d.ts.map +1 -0
  205. package/dist/internal/session/requests.js +240 -0
  206. package/dist/internal/session/requests.js.map +1 -0
  207. package/dist/internal/session/tracks.d.ts +21 -0
  208. package/dist/internal/session/tracks.d.ts.map +1 -0
  209. package/dist/internal/session/tracks.js +166 -0
  210. package/dist/internal/session/tracks.js.map +1 -0
  211. package/dist/internal/session/upload.d.ts +21 -0
  212. package/dist/internal/session/upload.d.ts.map +1 -0
  213. package/dist/internal/session/upload.js +68 -0
  214. package/dist/internal/session/upload.js.map +1 -0
  215. package/dist/internal/session.d.ts +66 -0
  216. package/dist/internal/session.d.ts.map +1 -0
  217. package/dist/internal/session.js +280 -0
  218. package/dist/internal/session.js.map +1 -0
  219. package/dist/{stats.d.ts → internal/stats.d.ts} +30 -16
  220. package/dist/internal/stats.d.ts.map +1 -0
  221. package/dist/internal/stats.js +201 -0
  222. package/dist/internal/stats.js.map +1 -0
  223. package/dist/internal/token.d.ts +22 -0
  224. package/dist/internal/token.d.ts.map +1 -0
  225. package/dist/internal/token.js +65 -0
  226. package/dist/internal/token.js.map +1 -0
  227. package/dist/internal/wire.d.ts +37 -0
  228. package/dist/internal/wire.d.ts.map +1 -0
  229. package/dist/internal/wire.js +49 -0
  230. package/dist/internal/wire.js.map +1 -0
  231. package/notices/bufbuild-protobuf-LICENSE +201 -0
  232. package/package.json +17 -38
  233. package/dist/FetchHttp.d.ts +0 -9
  234. package/dist/FetchHttp.d.ts.map +0 -1
  235. package/dist/FetchHttp.js +0 -63
  236. package/dist/FetchHttp.js.map +0 -1
  237. package/dist/PeerFactory.d.ts +0 -26
  238. package/dist/PeerFactory.d.ts.map +0 -1
  239. package/dist/PeerFactory.js +0 -4
  240. package/dist/PeerFactory.js.map +0 -1
  241. package/dist/PeerTypes.d.ts +0 -64
  242. package/dist/PeerTypes.d.ts.map +0 -1
  243. package/dist/PeerTypes.js +0 -2
  244. package/dist/PeerTypes.js.map +0 -1
  245. package/dist/Sequence.d.ts +0 -85
  246. package/dist/Sequence.d.ts.map +0 -1
  247. package/dist/Sequence.js +0 -210
  248. package/dist/Sequence.js.map +0 -1
  249. package/dist/SessionTypes.d.ts +0 -312
  250. package/dist/SessionTypes.d.ts.map +0 -1
  251. package/dist/SessionTypes.js +0 -19
  252. package/dist/SessionTypes.js.map +0 -1
  253. package/dist/Submission.d.ts.map +0 -1
  254. package/dist/Submission.js.map +0 -1
  255. package/dist/_internal/queue.d.ts +0 -6
  256. package/dist/_internal/queue.d.ts.map +0 -1
  257. package/dist/_internal/queue.js.map +0 -1
  258. package/dist/bytes.d.ts +0 -6
  259. package/dist/bytes.d.ts.map +0 -1
  260. package/dist/bytes.js +0 -32
  261. package/dist/bytes.js.map +0 -1
  262. package/dist/contract.d.ts +0 -149
  263. package/dist/contract.d.ts.map +0 -1
  264. package/dist/contract.js +0 -119
  265. package/dist/contract.js.map +0 -1
  266. package/dist/coordinator/_internal/client.d.ts +0 -215
  267. package/dist/coordinator/_internal/client.d.ts.map +0 -1
  268. package/dist/coordinator/_internal/client.js +0 -563
  269. package/dist/coordinator/_internal/client.js.map +0 -1
  270. package/dist/coordinator/_internal/recording.d.ts +0 -31
  271. package/dist/coordinator/_internal/recording.d.ts.map +0 -1
  272. package/dist/coordinator/_internal/recording.js +0 -123
  273. package/dist/coordinator/_internal/recording.js.map +0 -1
  274. package/dist/coordinator/_internal/response.d.ts +0 -15
  275. package/dist/coordinator/_internal/response.d.ts.map +0 -1
  276. package/dist/coordinator/_internal/response.js +0 -55
  277. package/dist/coordinator/_internal/response.js.map +0 -1
  278. package/dist/coordinator/_internal/schemas.d.ts +0 -73
  279. package/dist/coordinator/_internal/schemas.d.ts.map +0 -1
  280. package/dist/coordinator/_internal/schemas.js +0 -200
  281. package/dist/coordinator/_internal/schemas.js.map +0 -1
  282. package/dist/coordinator/index.d.ts +0 -40
  283. package/dist/coordinator/index.d.ts.map +0 -1
  284. package/dist/coordinator/index.js +0 -21
  285. package/dist/coordinator/index.js.map +0 -1
  286. package/dist/correlation.d.ts +0 -47
  287. package/dist/correlation.d.ts.map +0 -1
  288. package/dist/correlation.js +0 -131
  289. package/dist/correlation.js.map +0 -1
  290. package/dist/duration.d.ts +0 -27
  291. package/dist/duration.d.ts.map +0 -1
  292. package/dist/duration.js +0 -47
  293. package/dist/duration.js.map +0 -1
  294. package/dist/errors.d.ts +0 -1303
  295. package/dist/errors.d.ts.map +0 -1
  296. package/dist/errors.js +0 -745
  297. package/dist/errors.js.map +0 -1
  298. package/dist/h3/_internal/client.d.ts +0 -9
  299. package/dist/h3/_internal/client.d.ts.map +0 -1
  300. package/dist/h3/_internal/client.js +0 -652
  301. package/dist/h3/_internal/client.js.map +0 -1
  302. package/dist/h3/_internal/contracts.d.ts.map +0 -1
  303. package/dist/h3/_internal/contracts.js +0 -123
  304. package/dist/h3/_internal/contracts.js.map +0 -1
  305. package/dist/h3/_internal/deployment.d.ts +0 -8
  306. package/dist/h3/_internal/deployment.d.ts.map +0 -1
  307. package/dist/h3/_internal/deployment.js +0 -149
  308. package/dist/h3/_internal/deployment.js.map +0 -1
  309. package/dist/h3/_internal/evidence.d.ts +0 -17
  310. package/dist/h3/_internal/evidence.d.ts.map +0 -1
  311. package/dist/h3/_internal/evidence.js +0 -48
  312. package/dist/h3/_internal/evidence.js.map +0 -1
  313. package/dist/h3/_internal/operations.d.ts +0 -58
  314. package/dist/h3/_internal/operations.d.ts.map +0 -1
  315. package/dist/h3/_internal/operations.js +0 -268
  316. package/dist/h3/_internal/operations.js.map +0 -1
  317. package/dist/h3/_internal/references.d.ts +0 -24
  318. package/dist/h3/_internal/references.d.ts.map +0 -1
  319. package/dist/h3/_internal/references.js +0 -309
  320. package/dist/h3/_internal/references.js.map +0 -1
  321. package/dist/h3/_internal/request.d.ts +0 -21
  322. package/dist/h3/_internal/request.d.ts.map +0 -1
  323. package/dist/h3/_internal/request.js +0 -97
  324. package/dist/h3/_internal/request.js.map +0 -1
  325. package/dist/h3/_internal/retained.d.ts +0 -22
  326. package/dist/h3/_internal/retained.d.ts.map +0 -1
  327. package/dist/h3/_internal/retained.js +0 -89
  328. package/dist/h3/_internal/retained.js.map +0 -1
  329. package/dist/h3/_internal/state.d.ts +0 -44
  330. package/dist/h3/_internal/state.d.ts.map +0 -1
  331. package/dist/h3/_internal/state.js +0 -283
  332. package/dist/h3/_internal/state.js.map +0 -1
  333. package/dist/h3/index.d.ts +0 -10
  334. package/dist/h3/index.d.ts.map +0 -1
  335. package/dist/h3/index.js +0 -7
  336. package/dist/h3/index.js.map +0 -1
  337. package/dist/h3/messages.d.ts.map +0 -1
  338. package/dist/h3/messages.js.map +0 -1
  339. package/dist/h3/profile.d.ts.map +0 -1
  340. package/dist/h3/profile.js.map +0 -1
  341. package/dist/h3/types.d.ts +0 -291
  342. package/dist/h3/types.d.ts.map +0 -1
  343. package/dist/h3/types.js +0 -2
  344. package/dist/h3/types.js.map +0 -1
  345. package/dist/host.d.ts +0 -26
  346. package/dist/host.d.ts.map +0 -1
  347. package/dist/host.js +0 -20
  348. package/dist/host.js.map +0 -1
  349. package/dist/json.d.ts +0 -25
  350. package/dist/json.d.ts.map +0 -1
  351. package/dist/json.js +0 -143
  352. package/dist/json.js.map +0 -1
  353. package/dist/media-stream.d.ts +0 -10
  354. package/dist/media-stream.d.ts.map +0 -1
  355. package/dist/media-stream.js +0 -18
  356. package/dist/media-stream.js.map +0 -1
  357. package/dist/observation.d.ts +0 -38
  358. package/dist/observation.d.ts.map +0 -1
  359. package/dist/observation.js +0 -113
  360. package/dist/observation.js.map +0 -1
  361. package/dist/orchestration/elapsed.d.ts +0 -9
  362. package/dist/orchestration/elapsed.d.ts.map +0 -1
  363. package/dist/orchestration/elapsed.js +0 -8
  364. package/dist/orchestration/elapsed.js.map +0 -1
  365. package/dist/orchestration/h3-source.d.ts +0 -58
  366. package/dist/orchestration/h3-source.d.ts.map +0 -1
  367. package/dist/orchestration/h3-source.js +0 -362
  368. package/dist/orchestration/h3-source.js.map +0 -1
  369. package/dist/orchestration/index.d.ts +0 -17
  370. package/dist/orchestration/index.d.ts.map +0 -1
  371. package/dist/orchestration/index.js +0 -12
  372. package/dist/orchestration/index.js.map +0 -1
  373. package/dist/orchestration/media-buffer.d.ts +0 -32
  374. package/dist/orchestration/media-buffer.d.ts.map +0 -1
  375. package/dist/orchestration/media-buffer.js +0 -94
  376. package/dist/orchestration/media-buffer.js.map +0 -1
  377. package/dist/orchestration/open-h3.d.ts +0 -101
  378. package/dist/orchestration/open-h3.d.ts.map +0 -1
  379. package/dist/orchestration/open-h3.js +0 -127
  380. package/dist/orchestration/open-h3.js.map +0 -1
  381. package/dist/orchestration/queries.d.ts +0 -10
  382. package/dist/orchestration/queries.d.ts.map +0 -1
  383. package/dist/orchestration/queries.js +0 -43
  384. package/dist/orchestration/queries.js.map +0 -1
  385. package/dist/orchestration/references.d.ts +0 -18
  386. package/dist/orchestration/references.d.ts.map +0 -1
  387. package/dist/orchestration/references.js +0 -79
  388. package/dist/orchestration/references.js.map +0 -1
  389. package/dist/orchestration/renewal-state.d.ts +0 -84
  390. package/dist/orchestration/renewal-state.d.ts.map +0 -1
  391. package/dist/orchestration/renewal-state.js +0 -95
  392. package/dist/orchestration/renewal-state.js.map +0 -1
  393. package/dist/orchestration/renewal.d.ts +0 -103
  394. package/dist/orchestration/renewal.d.ts.map +0 -1
  395. package/dist/orchestration/renewal.js +0 -1099
  396. package/dist/orchestration/renewal.js.map +0 -1
  397. package/dist/orchestration/request.d.ts +0 -65
  398. package/dist/orchestration/request.d.ts.map +0 -1
  399. package/dist/orchestration/request.js +0 -134
  400. package/dist/orchestration/request.js.map +0 -1
  401. package/dist/orchestration/retention.d.ts +0 -100
  402. package/dist/orchestration/retention.d.ts.map +0 -1
  403. package/dist/orchestration/retention.js +0 -134
  404. package/dist/orchestration/retention.js.map +0 -1
  405. package/dist/orchestration/routing.d.ts +0 -21
  406. package/dist/orchestration/routing.d.ts.map +0 -1
  407. package/dist/orchestration/routing.js +0 -93
  408. package/dist/orchestration/routing.js.map +0 -1
  409. package/dist/orchestration/scheduler-key.d.ts +0 -14
  410. package/dist/orchestration/scheduler-key.d.ts.map +0 -1
  411. package/dist/orchestration/scheduler-key.js +0 -62
  412. package/dist/orchestration/scheduler-key.js.map +0 -1
  413. package/dist/orchestration/scheduler-policy.d.ts +0 -246
  414. package/dist/orchestration/scheduler-policy.d.ts.map +0 -1
  415. package/dist/orchestration/scheduler-policy.js +0 -668
  416. package/dist/orchestration/scheduler-policy.js.map +0 -1
  417. package/dist/orchestration/scheduler.d.ts +0 -393
  418. package/dist/orchestration/scheduler.d.ts.map +0 -1
  419. package/dist/orchestration/scheduler.js +0 -2621
  420. package/dist/orchestration/scheduler.js.map +0 -1
  421. package/dist/orchestration/source-slot.d.ts +0 -124
  422. package/dist/orchestration/source-slot.d.ts.map +0 -1
  423. package/dist/orchestration/source-slot.js +0 -348
  424. package/dist/orchestration/source-slot.js.map +0 -1
  425. package/dist/orchestration/types.d.ts +0 -1462
  426. package/dist/orchestration/types.d.ts.map +0 -1
  427. package/dist/orchestration/types.js +0 -135
  428. package/dist/orchestration/types.js.map +0 -1
  429. package/dist/protobuf.d.ts +0 -63
  430. package/dist/protobuf.d.ts.map +0 -1
  431. package/dist/protobuf.js +0 -252
  432. package/dist/protobuf.js.map +0 -1
  433. package/dist/session/_internal/acquire.d.ts +0 -21
  434. package/dist/session/_internal/acquire.d.ts.map +0 -1
  435. package/dist/session/_internal/acquire.js +0 -168
  436. package/dist/session/_internal/acquire.js.map +0 -1
  437. package/dist/session/_internal/cleanup.d.ts +0 -19
  438. package/dist/session/_internal/cleanup.d.ts.map +0 -1
  439. package/dist/session/_internal/cleanup.js +0 -102
  440. package/dist/session/_internal/cleanup.js.map +0 -1
  441. package/dist/session/_internal/lifecycle.d.ts +0 -67
  442. package/dist/session/_internal/lifecycle.d.ts.map +0 -1
  443. package/dist/session/_internal/lifecycle.js +0 -142
  444. package/dist/session/_internal/lifecycle.js.map +0 -1
  445. package/dist/session/_internal/remote.d.ts +0 -28
  446. package/dist/session/_internal/remote.d.ts.map +0 -1
  447. package/dist/session/_internal/remote.js +0 -71
  448. package/dist/session/_internal/remote.js.map +0 -1
  449. package/dist/session/_internal/uploads.d.ts +0 -7
  450. package/dist/session/_internal/uploads.d.ts.map +0 -1
  451. package/dist/session/_internal/uploads.js +0 -31
  452. package/dist/session/_internal/uploads.js.map +0 -1
  453. package/dist/session/commands.d.ts +0 -2
  454. package/dist/session/commands.d.ts.map +0 -1
  455. package/dist/session/commands.js +0 -2
  456. package/dist/session/commands.js.map +0 -1
  457. package/dist/session/files.d.ts +0 -21
  458. package/dist/session/files.d.ts.map +0 -1
  459. package/dist/session/files.js +0 -49
  460. package/dist/session/files.js.map +0 -1
  461. package/dist/session/index.d.ts +0 -84
  462. package/dist/session/index.d.ts.map +0 -1
  463. package/dist/session/index.js +0 -16
  464. package/dist/session/index.js.map +0 -1
  465. package/dist/session/media.d.ts +0 -114
  466. package/dist/session/media.d.ts.map +0 -1
  467. package/dist/session/media.js +0 -2
  468. package/dist/session/media.js.map +0 -1
  469. package/dist/session/recorder.d.ts +0 -24
  470. package/dist/session/recorder.d.ts.map +0 -1
  471. package/dist/session/recorder.js +0 -19
  472. package/dist/session/recorder.js.map +0 -1
  473. package/dist/session.d.ts +0 -105
  474. package/dist/session.d.ts.map +0 -1
  475. package/dist/session.js +0 -976
  476. package/dist/session.js.map +0 -1
  477. package/dist/simulation/_internal/source.d.ts +0 -12
  478. package/dist/simulation/_internal/source.d.ts.map +0 -1
  479. package/dist/simulation/_internal/source.js +0 -513
  480. package/dist/simulation/_internal/source.js.map +0 -1
  481. package/dist/simulation/index.d.ts +0 -13
  482. package/dist/simulation/index.d.ts.map +0 -1
  483. package/dist/simulation/index.js +0 -12
  484. package/dist/simulation/index.js.map +0 -1
  485. package/dist/simulation/types.d.ts +0 -39
  486. package/dist/simulation/types.d.ts.map +0 -1
  487. package/dist/simulation/types.js +0 -2
  488. package/dist/simulation/types.js.map +0 -1
  489. package/dist/stats.d.ts.map +0 -1
  490. package/dist/stats.js +0 -205
  491. package/dist/stats.js.map +0 -1
  492. package/dist/testing/Faults.d.ts +0 -4
  493. package/dist/testing/Faults.d.ts.map +0 -1
  494. package/dist/testing/Faults.js +0 -7
  495. package/dist/testing/Faults.js.map +0 -1
  496. package/dist/testing/Png.d.ts +0 -3
  497. package/dist/testing/Png.d.ts.map +0 -1
  498. package/dist/testing/Png.js.map +0 -1
  499. package/dist/testing/Wav.d.ts +0 -14
  500. package/dist/testing/Wav.d.ts.map +0 -1
  501. package/dist/testing/Wav.js +0 -37
  502. package/dist/testing/Wav.js.map +0 -1
  503. package/dist/testing/index.d.ts +0 -5
  504. package/dist/testing/index.d.ts.map +0 -1
  505. package/dist/testing/index.js +0 -4
  506. package/dist/testing/index.js.map +0 -1
  507. package/dist/wire.d.ts +0 -7
  508. package/dist/wire.d.ts.map +0 -1
  509. package/dist/wire.generated.d.ts +0 -305
  510. package/dist/wire.generated.d.ts.map +0 -1
  511. package/dist/wire.generated.js +0 -1257
  512. package/dist/wire.generated.js.map +0 -1
  513. package/dist/wire.js +0 -5
  514. package/dist/wire.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/internal/session.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,12 @@ export interface Statistics {
17
17
  readonly availableOutgoingBitrate?: number;
18
18
  readonly availableIncomingBitrate?: number;
19
19
  };
20
+ /**
21
+ * Over the interval since the session's previous sample, whoever took it,
22
+ * and absent from a sample taken within 200 ms of that one. Every caller of
23
+ * `stats` on one session shares the baseline: of two monitors polling it
24
+ * 100 ms apart, one never gets rates.
25
+ */
20
26
  readonly rates?: {
21
27
  readonly sentBitsPerSecond: number;
22
28
  readonly receivedBitsPerSecond: number;
@@ -30,23 +36,31 @@ export interface Statistics {
30
36
  readonly targetBitrate?: number;
31
37
  readonly warnings: readonly string[];
32
38
  }
33
- /** Browser counters are JS numbers. Unsafe integers are flagged, never falsely converted back to full precision. */
34
- export declare class StatsSampler {
35
- private baseline;
39
+ export interface Baseline {
40
+ readonly key: string;
41
+ readonly at: number;
42
+ readonly sent: bigint;
43
+ readonly received: bigint;
44
+ }
45
+ /** What one generation's previous sample leaves for the next. */
46
+ export interface SamplerState {
47
+ readonly baseline: Baseline | undefined;
36
48
  /** Each candidate pair's received bytes at the previous sample, by `pairKey`. */
37
- private received;
49
+ readonly received: ReadonlyMap<string, bigint>;
38
50
  /** The pair the previous sample reported, by the same key. */
39
- private chosen;
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;
50
- sample(raw: readonly unknown[], generation: bigint, atMs: number): Statistics;
51
+ readonly chosen: string | undefined;
51
52
  }
53
+ export declare const initialSampler: SamplerState;
54
+ /**
55
+ * One statistics sample and the state the next one compares against. Browser
56
+ * counters are JS numbers: an unsafe integer is flagged, never falsely
57
+ * converted back to full precision.
58
+ */
59
+ export declare const sample: (input: {
60
+ readonly state: SamplerState;
61
+ readonly raw: ReadonlyArray<unknown>;
62
+ readonly generation: bigint;
63
+ /** Monotonic milliseconds. */
64
+ readonly atMs: number;
65
+ }) => readonly [Statistics, SamplerState];
52
66
  //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/internal/stats.ts"],"names":[],"mappings":"AACA,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;;;;;OAKG;IACH,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,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAwCD,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IACxC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,YAI5B,CAAC;AAiDF;;;;GAIG;AACH,eAAO,MAAM,MAAM,UAAW;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,KAAG,SAAS,CAAC,UAAU,EAAE,YAAY,CA0HrC,CAAC"}
@@ -0,0 +1,201 @@
1
+ import * as Predicate from "effect/Predicate";
2
+ const number = (u) => Predicate.isNumber(u) && Number.isFinite(u) ? u : undefined;
3
+ const positive = (u) => {
4
+ const n = number(u);
5
+ return n !== undefined && n > 0 ? n : undefined;
6
+ };
7
+ const text = (u) => (Predicate.isString(u) ? u : undefined);
8
+ /** A whole number as a bigint, when it is one exactly. */
9
+ const whole = (u) => {
10
+ if (Predicate.isBigInt(u))
11
+ return u;
12
+ return Predicate.isNumber(u) && Number.isSafeInteger(u) ? BigInt(u) : undefined;
13
+ };
14
+ /** A byte counter as a bigint, when it is one exactly; only for choosing a pair. */
15
+ const bytes = (u) => {
16
+ if (Predicate.isBigInt(u))
17
+ return u;
18
+ const n = whole(u);
19
+ return n !== undefined && n >= 0n ? n : undefined;
20
+ };
21
+ /** A counter's growth since `prior`; one below it belongs to a reset pair, which grew by all of it. */
22
+ const growth = (count, prior) => {
23
+ if (count === undefined)
24
+ return 0n;
25
+ return prior === undefined || count < prior ? count : count - prior;
26
+ };
27
+ const isPair = (e) => e.type === "candidate-pair" && Predicate.isString(e.id);
28
+ /**
29
+ * One pair across the samples of a generation. The native host names pairs by
30
+ * their position in its report, which shifts when a pair is added or dropped.
31
+ * A pair's priority, fixed by its two candidates, and its local candidate
32
+ * identify it instead; where a host reports no priority, its id does.
33
+ */
34
+ const pairKey = (generation, pair, byId) => {
35
+ const priority = pair.priority;
36
+ if (!Predicate.isBigInt(priority) && !Predicate.isNumber(priority))
37
+ return `${generation}:id:${pair.id}`;
38
+ const local = byId.get(text(pair.localCandidateId) ?? "");
39
+ return `${generation}:priority:${priority}:${text(local?.candidateType) ?? ""}:${text(local?.relayProtocol) ?? ""}`;
40
+ };
41
+ export const initialSampler = {
42
+ baseline: undefined,
43
+ received: new Map(),
44
+ chosen: undefined,
45
+ };
46
+ /**
47
+ * The pair carrying the connection. A transport's `selectedCandidatePairId`
48
+ * names it where the host reports one, as browsers do. Otherwise it is the
49
+ * nominated, succeeded pair that received the most since the previous sample:
50
+ * ICE leaves a pair nominated after moving off it. A tie keeps the pair
51
+ * reported before, and otherwise goes to the first.
52
+ */
53
+ const selectedPair = (state, entries, byId, generation) => {
54
+ const pairs = entries.filter(isPair);
55
+ const key = (pair) => pairKey(generation, pair, byId);
56
+ const received = new Map(pairs.flatMap((pair) => {
57
+ const count = bytes(pair.bytesReceived);
58
+ return count === undefined ? [] : [[key(pair), count]];
59
+ }));
60
+ let chosen;
61
+ for (const transport of entries) {
62
+ if (transport.type !== "transport")
63
+ continue;
64
+ const named = byId.get(text(transport.selectedCandidatePairId) ?? "");
65
+ if (named !== undefined && isPair(named)) {
66
+ chosen = named;
67
+ break;
68
+ }
69
+ }
70
+ let most = -1n;
71
+ if (chosen === undefined)
72
+ for (const pair of pairs) {
73
+ if (pair.nominated !== true || pair.state !== "succeeded")
74
+ continue;
75
+ const grown = growth(bytes(pair.bytesReceived), state.received.get(key(pair)));
76
+ if (grown > most || (grown === most && key(pair) === state.chosen)) {
77
+ chosen = pair;
78
+ most = grown;
79
+ }
80
+ }
81
+ return { pair: chosen, received, chosen: chosen === undefined ? undefined : key(chosen) };
82
+ };
83
+ /**
84
+ * One statistics sample and the state the next one compares against. Browser
85
+ * counters are JS numbers: an unsafe integer is flagged, never falsely
86
+ * converted back to full precision.
87
+ */
88
+ export const sample = (input) => {
89
+ const { state, raw, generation, atMs } = input;
90
+ const warnings = [], entries = raw.filter(Predicate.isObject), byId = new Map(entries.flatMap((e) => (Predicate.isString(e.id) ? [[e.id, e]] : [])));
91
+ const counter = (u, field, signed = false) => {
92
+ if (u === undefined)
93
+ return undefined;
94
+ const n = whole(u);
95
+ if (n === undefined ||
96
+ (signed ? n < -(1n << 63n) || n >= 1n << 63n : n < 0n || n > 0xffffffffffffffffn)) {
97
+ warnings.push(`${field}: counter precision/range unavailable`);
98
+ return undefined;
99
+ }
100
+ return n;
101
+ };
102
+ const selection = selectedPair(state, entries, byId, generation);
103
+ const pair = selection.pair;
104
+ let baseline = state.baseline;
105
+ let pairResult, rates;
106
+ if (pair !== undefined) {
107
+ const sent = counter(pair.bytesSent, "pair.bytesSent"), received = counter(pair.bytesReceived, "pair.bytesReceived");
108
+ const local = byId.get(text(pair.localCandidateId) ?? ""), remote = byId.get(text(pair.remoteCandidateId) ?? "");
109
+ const localType = text(local?.candidateType), remoteType = text(remote?.candidateType);
110
+ const out = positive(pair.availableOutgoingBitrate), incoming = positive(pair.availableIncomingBitrate);
111
+ pairResult = {
112
+ id: pair.id,
113
+ ...(sent === undefined ? {} : { bytesSent: sent }),
114
+ ...(received === undefined ? {} : { bytesReceived: received }),
115
+ ...(localType === undefined ? {} : { localCandidateType: localType }),
116
+ ...(remoteType === undefined ? {} : { remoteCandidateType: remoteType }),
117
+ ...(out === undefined ? {} : { availableOutgoingBitrate: out }),
118
+ ...(incoming === undefined ? {} : { availableIncomingBitrate: incoming }),
119
+ };
120
+ if (sent !== undefined && received !== undefined) {
121
+ const key = pairKey(generation, pair, byId), previous = state.baseline;
122
+ if (previous?.key === key &&
123
+ atMs >= previous.at &&
124
+ sent >= previous.sent &&
125
+ received >= previous.received) {
126
+ const dt = atMs - previous.at;
127
+ if (dt >= 200) {
128
+ rates = {
129
+ sentBitsPerSecond: (Number(sent - previous.sent) * 8000) / dt,
130
+ receivedBitsPerSecond: (Number(received - previous.received) * 8000) / dt,
131
+ intervalMs: dt,
132
+ };
133
+ baseline = { key, at: atMs, sent, received };
134
+ }
135
+ // Sub-200ms samples intentionally keep the previous baseline.
136
+ }
137
+ else
138
+ baseline = { key, at: atMs, sent, received };
139
+ }
140
+ else
141
+ baseline = undefined;
142
+ }
143
+ else {
144
+ baseline = undefined;
145
+ warnings.push("no nominated AND succeeded candidate pair");
146
+ }
147
+ const inbound = entries.filter((e) => e.type === "inbound-rtp"), firstVideo = inbound.find((e) => e.kind === "video" || e.mediaType === "video");
148
+ const measured = firstVideo === undefined ? inbound : [firstVideo];
149
+ let ratioLost = 0n, ratioReceived = 0n, ratioValid = measured.length > 0;
150
+ let totalLost = 0n, totalValid = inbound.length > 0;
151
+ for (const entry of inbound) {
152
+ const lost = counter(entry.packetsLost, "packetsLost", true);
153
+ if (lost === undefined)
154
+ totalValid = false;
155
+ else
156
+ totalLost += lost;
157
+ }
158
+ for (const entry of measured) {
159
+ const lost = counter(entry.packetsLost, "loss ratio packetsLost", true), received = counter(entry.packetsReceived, "loss ratio packetsReceived");
160
+ if (lost === undefined || received === undefined)
161
+ ratioValid = false;
162
+ else {
163
+ ratioLost += lost > 0n ? lost : 0n;
164
+ ratioReceived += received;
165
+ }
166
+ }
167
+ const jitterSamples = measured
168
+ .map((e) => number(e.jitter))
169
+ .filter((n) => n !== undefined && n >= 0);
170
+ const jitter = jitterSamples.length > 0 ? Math.max(...jitterSamples) : undefined;
171
+ const counted = ratioLost + ratioReceived;
172
+ const lostShare = counted === 0n ? 0 : Number(ratioLost) / Number(counted);
173
+ const ratio = ratioValid ? lostShare : undefined;
174
+ const fps = firstVideo === undefined ? undefined : positive(firstVideo.framesPerSecond);
175
+ const fallbackRtts = entries
176
+ .map((e) => e.type === "remote-inbound-rtp" || e.type === "outbound-rtp"
177
+ ? positive(e.roundTripTime)
178
+ : undefined)
179
+ .filter((n) => n !== undefined);
180
+ const rtt = positive(pair?.currentRoundTripTime) ??
181
+ (fallbackRtts.length > 0 ? Math.max(...fallbackRtts) : undefined);
182
+ const targets = entries
183
+ .filter((e) => e.type === "outbound-rtp")
184
+ .map((e) => positive(e.targetBitrate))
185
+ .filter((n) => n !== undefined);
186
+ const statistics = {
187
+ sampledAtMs: atMs,
188
+ generation,
189
+ ...(pairResult === undefined ? {} : { pair: pairResult }),
190
+ ...(rates === undefined ? {} : { rates }),
191
+ ...(jitter === undefined ? {} : { jitterSeconds: jitter }),
192
+ ...(ratio === undefined ? {} : { lossRatio: ratio }),
193
+ ...(totalValid ? { totalPacketsLost: totalLost } : {}),
194
+ ...(fps === undefined ? {} : { framesPerSecond: fps }),
195
+ ...(rtt === undefined ? {} : { roundTripTimeSeconds: rtt }),
196
+ ...(targets.length > 0 ? { targetBitrate: targets.reduce((a, b) => a + b, 0) } : {}),
197
+ warnings,
198
+ };
199
+ return [statistics, { baseline, received: selection.received, chosen: selection.chosen }];
200
+ };
201
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/internal/stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type * as Redacted from "effect/Redacted";
3
+ import type { Tokens } from "../Coordinator.js";
4
+ import { ReactorError } from "../ReactorError.js";
5
+ export interface Token {
6
+ /** The token for the next call: minted when first needed, refreshed before it expires. */
7
+ readonly current: Effect.Effect<Redacted.Redacted<string> | undefined, ReactorError>;
8
+ /** From now on, refreshed tokens are bound to `sessionId`. */
9
+ readonly bind: (sessionId: string) => Effect.Effect<void>;
10
+ }
11
+ export declare const make: (input: {
12
+ /** An attached session needs no `create`. */
13
+ readonly tokens: (Pick<Tokens, "bind"> & Partial<Pick<Tokens, "create">>) | undefined;
14
+ /** An attached session's id; a created session's is bound once it is allocated. */
15
+ readonly sessionId: string | undefined;
16
+ /** A refresh failed while the current token still works. */
17
+ readonly onRefreshFailure: (error: ReactorError) => Effect.Effect<void>;
18
+ }) => Effect.Effect<{
19
+ current: Effect.Effect<Redacted.Redacted<string> | undefined, ReactorError, never>;
20
+ bind: (sessionId: string) => Effect.Effect<void, never, never>;
21
+ }, never, never>;
22
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/internal/token.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBlD,MAAM,WAAW,KAAK;IACpB,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC;IACrF,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,IAAI;IACf,6CAA6C;qBAC5B,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IACrF,mFAAmF;wBAC/D,MAAM,GAAG,SAAS;IACtC,4DAA4D;+BACjC,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;;;gBAmDvE,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * A session's current token. A session-scoped token lives at most six hours and
3
+ * acts only on the sessions it created or was bound to, while a session may run
4
+ * longer: so the session keeps one token for every call and, a margin before it
5
+ * expires, mints the next bound to its own id. Concurrent calls share one mint.
6
+ */
7
+ import * as Clock from "effect/Clock";
8
+ import * as Effect from "effect/Effect";
9
+ import * as SynchronizedRef from "effect/SynchronizedRef";
10
+ import { ReactorError } from "../ReactorError.js";
11
+ /**
12
+ * How long before expiry the next token is minted, as Reactor's own guidance
13
+ * does: a minute, or a quarter of a shorter token's life, so a short token is
14
+ * refreshed once near its end rather than on every call.
15
+ */
16
+ const refreshMarginMs = 60_000;
17
+ /** After a failed refresh, how long calls keep the current token before minting again. */
18
+ const retryMs = 10_000;
19
+ export const make = Effect.fnUntraced(function* (input) {
20
+ const { tokens, onRefreshFailure } = input;
21
+ const state = yield* SynchronizedRef.make({
22
+ grant: undefined,
23
+ mintedAt: 0,
24
+ sessionId: input.sessionId,
25
+ retryAt: 0,
26
+ });
27
+ const current = tokens === undefined
28
+ ? Effect.undefined
29
+ : SynchronizedRef.modifyEffect(state, (value) => Effect.gen(function* () {
30
+ const now = yield* Clock.currentTimeMillis;
31
+ const held = value.grant;
32
+ const mint = value.sessionId !== undefined
33
+ ? tokens.bind(value.sessionId)
34
+ : (tokens.create ??
35
+ Effect.fail(ReactorError.fromCode("InvalidInput", "creating a session needs a token", {
36
+ outcome: "not-submitted",
37
+ })));
38
+ if (held === undefined) {
39
+ const grant = yield* mint;
40
+ return [grant.jwt, { ...value, grant, mintedAt: now }];
41
+ }
42
+ const expiresAt = held.expiresAt * 1000;
43
+ const valid = expiresAt > now;
44
+ const margin = Math.min(refreshMarginMs, (expiresAt - value.mintedAt) / 4);
45
+ if (expiresAt - now > margin || (valid && now < value.retryAt))
46
+ return [held.jwt, value];
47
+ const next = yield* Effect.result(mint);
48
+ if (next._tag === "Success" && next.success.expiresAt > held.expiresAt)
49
+ return [
50
+ next.success.jwt,
51
+ { ...value, grant: next.success, mintedAt: now, retryAt: 0 },
52
+ ];
53
+ if (next._tag === "Failure") {
54
+ if (!valid)
55
+ return yield* next.failure;
56
+ yield* onRefreshFailure(next.failure);
57
+ }
58
+ return [held.jwt, { ...value, retryAt: now + retryMs }];
59
+ }));
60
+ return {
61
+ current,
62
+ bind: (sessionId) => SynchronizedRef.update(state, (value) => ({ ...value, sessionId })),
63
+ };
64
+ });
65
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/internal/token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The Reactor wire protocol: the protobuf-es code `bun run generate:wire`
3
+ * builds from `wire/proto`, and the bounds messages are held to at the edge.
4
+ *
5
+ * protobuf-es converts every `google.protobuf.Struct` field to and from a
6
+ * plain JSON object, so no other module converts Struct.
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import * as Schema from "effect/Schema";
10
+ import type { DescMessage, JsonObject, MessageInitShape, MessageShape } from "@bufbuild/protobuf";
11
+ import { ReactorError } from "../ReactorError.js";
12
+ export * from "./proto/reactor_wire/v1/common_pb.js";
13
+ export * from "./proto/reactor_wire/v1/control_pb.js";
14
+ export * from "./proto/reactor_wire/v1/data_pb.js";
15
+ export * from "./proto/reactor_wire/v1/model_pb.js";
16
+ export * from "./proto/reactor_wire/v1/platform_pb.js";
17
+ export * from "./proto/reactor_wire/v1/track_pb.js";
18
+ /** The largest channel message: the SCTP limit both peers hold. */
19
+ export declare const maxMessageBytes = 262144;
20
+ /**
21
+ * A received message, decoded. Remote bytes are untrusted: a message larger
22
+ * than a channel can carry, or one protobuf-es refuses, fails as `Protocol`.
23
+ *
24
+ * The hand-written reader this replaced also budgeted nesting depth (64) and
25
+ * field count (65,536). Depth guarded the recursive decoder's stack;
26
+ * protobuf-es stops at 100 nested messages instead. The field budget capped
27
+ * the objects one message could allocate; the byte bound caps them now, since
28
+ * every field costs at least two bytes.
29
+ */
30
+ export declare const decode: <Desc extends DescMessage>(schema: Desc) => (bytes: Uint8Array) => Effect.Effect<MessageShape<Desc>, ReactorError>;
31
+ /** A message built from its fields and encoded, or `InvalidInput` if a channel cannot carry it. */
32
+ export declare const encode: <Desc extends DescMessage>(schema: Desc) => (init: MessageInitShape<Desc>) => Effect.Effect<Uint8Array<ArrayBuffer>, ReactorError>;
33
+ /** The JSON a `google.protobuf.Struct` field holds, typed as protobuf-es takes it. */
34
+ export declare const StructJson: Schema.$Record<Schema.String, Schema.Codec<Schema.MutableJson, Schema.MutableJson, never, never>>;
35
+ /** A received Struct as JSON: protobuf-es passes through the non-finite numbers JSON cannot hold. */
36
+ export declare const json: (object: JsonObject) => Effect.Effect<typeof StructJson.Type, ReactorError>;
37
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/internal/wire.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AAEpD,mEAAmE;AACnE,eAAO,MAAM,eAAe,SAAU,CAAC;AAIvC;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,GAChB,IAAI,SAAS,WAAW,UAAU,IAAI,aAC/B,UAAU,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAO3D,CAAC;AAEX,mGAAmG;AACnG,eAAO,MAAM,MAAM,GAChB,IAAI,SAAS,WAAW,UAAU,IAAI,YAChC,gBAAgB,CAAC,IAAI,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,YAAY,CAUhF,CAAC;AAEN,sFAAsF;AACtF,eAAO,MAAM,UAAU,mGAAmD,CAAC;AAI3E,qGAAqG;AACrG,eAAO,MAAM,IAAI,WAAY,UAAU,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,YAAY,CAGD,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The Reactor wire protocol: the protobuf-es code `bun run generate:wire`
3
+ * builds from `wire/proto`, and the bounds messages are held to at the edge.
4
+ *
5
+ * protobuf-es converts every `google.protobuf.Struct` field to and from a
6
+ * plain JSON object, so no other module converts Struct.
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import * as Schema from "effect/Schema";
10
+ import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
11
+ import { ReactorError } from "../ReactorError.js";
12
+ export * from "./proto/reactor_wire/v1/common_pb.js";
13
+ export * from "./proto/reactor_wire/v1/control_pb.js";
14
+ export * from "./proto/reactor_wire/v1/data_pb.js";
15
+ export * from "./proto/reactor_wire/v1/model_pb.js";
16
+ export * from "./proto/reactor_wire/v1/platform_pb.js";
17
+ export * from "./proto/reactor_wire/v1/track_pb.js";
18
+ /** The largest channel message: the SCTP limit both peers hold. */
19
+ export const maxMessageBytes = 262_144;
20
+ const tooLarge = `a wire message exceeds ${maxMessageBytes} bytes`;
21
+ /**
22
+ * A received message, decoded. Remote bytes are untrusted: a message larger
23
+ * than a channel can carry, or one protobuf-es refuses, fails as `Protocol`.
24
+ *
25
+ * The hand-written reader this replaced also budgeted nesting depth (64) and
26
+ * field count (65,536). Depth guarded the recursive decoder's stack;
27
+ * protobuf-es stops at 100 nested messages instead. The field budget capped
28
+ * the objects one message could allocate; the byte bound caps them now, since
29
+ * every field costs at least two bytes.
30
+ */
31
+ export const decode = (schema) => (bytes) => bytes.byteLength > maxMessageBytes
32
+ ? Effect.fail(ReactorError.fromCode("Protocol", tooLarge))
33
+ : Effect.try({
34
+ try: () => fromBinary(schema, bytes),
35
+ catch: (cause) => ReactorError.fromCode("Protocol", `malformed ${schema.typeName}`, { detail: cause }),
36
+ });
37
+ /** A message built from its fields and encoded, or `InvalidInput` if a channel cannot carry it. */
38
+ export const encode = (schema) => (init) => Effect.try({
39
+ try: () => toBinary(schema, create(schema, init)),
40
+ catch: (cause) => ReactorError.fromCode("InvalidInput", `unencodable ${schema.typeName}`, { detail: cause }),
41
+ }).pipe(Effect.filterOrFail((bytes) => bytes.byteLength <= maxMessageBytes, () => ReactorError.fromCode("InvalidInput", tooLarge)));
42
+ /** The JSON a `google.protobuf.Struct` field holds, typed as protobuf-es takes it. */
43
+ export const StructJson = Schema.Record(Schema.String, Schema.MutableJson);
44
+ const isStructJson = Schema.is(StructJson);
45
+ /** A received Struct as JSON: protobuf-es passes through the non-finite numbers JSON cannot hold. */
46
+ export const json = (object) => isStructJson(object)
47
+ ? Effect.succeed(object)
48
+ : Effect.fail(ReactorError.fromCode("Protocol", "a Struct holds a number JSON cannot"));
49
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/internal/wire.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AAEpD,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,QAAQ,GAAG,0BAA0B,eAAe,QAAQ,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,CAA2B,MAAY,EAAE,EAAE,CAC3C,CAAC,KAAiB,EAAmD,EAAE,CACrE,KAAK,CAAC,UAAU,GAAG,eAAe;IAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACT,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;QACpC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;KACvF,CAAC,CAAC;AAEX,mGAAmG;AACnG,MAAM,CAAC,MAAM,MAAM,GACjB,CAA2B,MAAY,EAAE,EAAE,CAC3C,CAAC,IAA4B,EAAwD,EAAE,CACrF,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;CAC7F,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,YAAY,CACjB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,eAAe,EAC9C,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CACtD,CACF,CAAC;AAEN,sFAAsF;AACtF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAE3E,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAE3C,qGAAqG;AACrG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAkB,EAAuD,EAAE,CAC9F,YAAY,CAAC,MAAM,CAAC;IAClB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC,CAAC"}