reactor-effect-client 0.7.0 → 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 -1088
  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 -222
  414. package/dist/orchestration/scheduler-policy.d.ts.map +0 -1
  415. package/dist/orchestration/scheduler-policy.js +0 -582
  416. package/dist/orchestration/scheduler-policy.js.map +0 -1
  417. package/dist/orchestration/scheduler.d.ts +0 -383
  418. package/dist/orchestration/scheduler.d.ts.map +0 -1
  419. package/dist/orchestration/scheduler.js +0 -2597
  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,51 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { Termination } from "./Coordinator.js";
3
+ import { FailureSummary } from "./ReactorError.js";
4
+ /** A recording the session prepared, with the playlist to download it from. */
5
+ export const ClipReady = Schema.Struct({
6
+ sessionId: Schema.String,
7
+ kind: Schema.String,
8
+ startMarker: Schema.Finite,
9
+ endMarker: Schema.Finite,
10
+ nowMarker: Schema.Finite,
11
+ predictedReadyAtMs: Schema.BigInt,
12
+ playlistUrl: Schema.String,
13
+ });
14
+ /**
15
+ * A control-channel message Reactor sent. Provider text (a clip failure's
16
+ * reason, an error's code and message) stays `Redacted`.
17
+ */
18
+ export const ControlMessage = Schema.Union([
19
+ Schema.TaggedStruct("ModelSchema", { openapi: Schema.optionalKey(Schema.JsonObject) }),
20
+ Schema.TaggedStruct("ClipReady", { clip: ClipReady }),
21
+ Schema.TaggedStruct("ClipFailed", { reason: Schema.Redacted(Schema.String) }),
22
+ Schema.TaggedStruct("TrackPublished", { name: Schema.String }),
23
+ Schema.TaggedStruct("Error", {
24
+ code: Schema.Redacted(Schema.String),
25
+ message: Schema.Redacted(Schema.String),
26
+ }),
27
+ ]);
28
+ /**
29
+ * A session's cleanup evidence, a Schema so it can be persisted. Termination
30
+ * is confirmed by an independent read, never by a DELETE response alone.
31
+ */
32
+ export const CloseReport = Schema.Struct({
33
+ localClosed: Schema.Boolean,
34
+ allocation: Schema.Literals(["none", "known", "unknown"]),
35
+ ownership: Schema.optionalKey(Schema.Literals(["owned", "attached"])),
36
+ sessionId: Schema.optionalKey(Schema.String),
37
+ remote: Termination,
38
+ unpublishSubmitted: Schema.Array(Schema.String),
39
+ /** Claims possibly accepted remotely without an attributable response. */
40
+ unresolvedPublications: Schema.Array(Schema.String),
41
+ localErrors: Schema.Array(FailureSummary),
42
+ });
43
+ /**
44
+ * Whether the session a report closed may still bill: this process owned it
45
+ * and no read confirmed it ended, or it asked for an allocation whose outcome,
46
+ * and so whose id, never arrived. Nothing can confirm the second ended; the
47
+ * session's cap bounds it.
48
+ */
49
+ export const mayStillBill = (report) => report.allocation === "unknown" ||
50
+ (report.allocation === "known" && report.ownership === "owned" && !report.remote.confirmed);
51
+ //# sourceMappingURL=Session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.js","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,kBAAkB,EAAE,MAAM,CAAC,MAAM;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM;CAC3B,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;IACzC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IACtF,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrD,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7E,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC9D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;QAC3B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACxC,CAAC;CACH,CAAC,CAAC;AAoBH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,OAAO;IAC3B,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACrE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,WAAW;IACnB,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/C,0EAA0E;IAC1E,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACnD,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;CAC1C,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAmB,EAAW,EAAE,CAC3D,MAAM,CAAC,UAAU,KAAK,SAAS;IAC/B,CAAC,MAAM,CAAC,UAAU,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,23 +1,13 @@
1
- /** Portable entry point: importing it does not select or load a native/browser peer. */
2
- export { Client, make, layer, AcquisitionFailure, CommandFailure } from "./session/index.js";
3
- export type { Factory, Configuration, CreateOptions, AttachOptions, Session, } from "./session/index.js";
4
- export * as Coordinator from "./coordinator/index.js";
5
- export * as Peers from "./PeerFactory.js";
6
- export * as FetchHttp from "./FetchHttp.js";
7
- export { ReactorError, ErrorCode, FailureCode, Failure, Http, Remote, Native, IceFailed, TransportFailed, ClipEnded, ReactorErrorReason, isReactorFailure, } from "./errors.js";
8
- export type { ErrorContext, MessageCode, ReactorFailure, RemoteOutcome } from "./errors.js";
9
- export { PeerFactory } from "./PeerFactory.js";
10
- export { recorder } from "./session/recorder.js";
11
- export type { Recorded } from "./session/recorder.js";
12
- export type { PeerFactoryShape } from "./PeerFactory.js";
13
- export type { SessionEvent, EventPayload, Snapshot, ReadyState, ReadyDescriptor, Status, Ownership, Observe, Observation, Attribution, CommandReply, CommandOptions, ReplyTimeoutOptions, SessionTimeouts, Uploaded, UploadProgress, UploadTimeoutOptions, } from "./SessionTypes.js";
14
- export { CloseReport } from "./SessionTypes.js";
15
- export { Termination } from "./coordinator/_internal/client.js";
16
- export type { HttpOptions } from "./coordinator/_internal/client.js";
17
- export type { CommandContext } from "./session/commands.js";
18
- export type { Correlation } from "./correlation.js";
19
- export type { Statistics } from "./stats.js";
20
- export type { Json, JsonObject } from "./json.js";
21
- export { Capabilities, Mapping, SessionDescriptor, Track } from "./contract.js";
22
- export type { Descriptor } from "./contract.js";
1
+ /** Portable entry point: importing it selects no host and loads no native code. */
2
+ export * as Coordinator from "./Coordinator.js";
3
+ export * as H3 from "./H3.js";
4
+ export * as H3Source from "./H3Source.js";
5
+ export * as LocalSource from "./LocalSource.js";
6
+ export * as Media from "./Media.js";
7
+ export * as Peer from "./Peer.js";
8
+ export * as Playout from "./Playout.js";
9
+ export * as Reactor from "./Reactor.js";
10
+ export * as ReactorError from "./ReactorError.js";
11
+ export * as ReactorTest from "./ReactorTest.js";
12
+ export * as Session from "./Session.js";
23
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EACV,OAAO,EACP,aAAa,EACb,aAAa,EACb,aAAa,EACb,OAAO,GACR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,OAAO,EACP,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,MAAM,EACN,SAAS,EACT,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,cAAc,EACd,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChF,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
- /** Portable entry point: importing it does not select or load a native/browser peer. */
2
- export { Client, make, layer, AcquisitionFailure, CommandFailure } from "./session/index.js";
3
- export * as Coordinator from "./coordinator/index.js";
4
- export * as Peers from "./PeerFactory.js";
5
- export * as FetchHttp from "./FetchHttp.js";
6
- export { ReactorError, ErrorCode, FailureCode, Failure, Http, Remote, Native, IceFailed, TransportFailed, ClipEnded, ReactorErrorReason, isReactorFailure, } from "./errors.js";
7
- export { PeerFactory } from "./PeerFactory.js";
8
- export { recorder } from "./session/recorder.js";
9
- export { CloseReport } from "./SessionTypes.js";
10
- export { Termination } from "./coordinator/_internal/client.js";
11
- export { Capabilities, Mapping, SessionDescriptor, Track } from "./contract.js";
1
+ /** Portable entry point: importing it selects no host and loads no native code. */
2
+ export * as Coordinator from "./Coordinator.js";
3
+ export * as H3 from "./H3.js";
4
+ export * as H3Source from "./H3Source.js";
5
+ export * as LocalSource from "./LocalSource.js";
6
+ export * as Media from "./Media.js";
7
+ export * as Peer from "./Peer.js";
8
+ export * as Playout from "./Playout.js";
9
+ export * as Reactor from "./Reactor.js";
10
+ export * as ReactorError from "./ReactorError.js";
11
+ export * as ReactorTest from "./ReactorTest.js";
12
+ export * as Session from "./Session.js";
12
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQ7F,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,OAAO,EACP,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAsBjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAMhE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Request/reply correlation for the Reactor wire.
3
+ *
4
+ * Effect's `RpcClient` does not fit this wire: it drops a late or second
5
+ * reply, forgets a request whose caller was interrupted and has no bound. A
6
+ * model command is paid and has no cancel message, so a reply must stay
7
+ * attributable after its caller stops waiting. Requests are registered before
8
+ * they are sent, replies are labelled rather than dropped, and retiring a
9
+ * generation fails its requests with their dispatch outcome.
10
+ */
11
+ import * as Deferred from "effect/Deferred";
12
+ import * as Effect from "effect/Effect";
13
+ import { ReactorError } from "../ReactorError.js";
14
+ /** How a reply relates to the requests this client made. */
15
+ export type Correlation = "matched" | "late" | "duplicate" | "unsolicited" | "late-or-unknown" | "stale-generation";
16
+ export interface Pending<A> {
17
+ readonly id: string;
18
+ readonly generation: bigint;
19
+ readonly operation: string;
20
+ readonly deferred: Deferred.Deferred<A, ReactorError>;
21
+ }
22
+ export interface Correlator<A> {
23
+ readonly size: Effect.Effect<number>;
24
+ readonly register: (generation: bigint, operation: string) => Effect.Effect<Pending<A>, ReactorError>;
25
+ readonly submitted: (pending: Pending<A>) => Effect.Effect<void>;
26
+ readonly isSubmitted: (pending: Pending<A>) => Effect.Effect<boolean>;
27
+ readonly isPending: (pending: Pending<A>) => Effect.Effect<boolean>;
28
+ /** The caller stopped waiting; a later reply is `late`, not `matched`. */
29
+ readonly abandon: (pending: Pending<A>) => Effect.Effect<void>;
30
+ readonly cancel: (pending: Pending<A>) => Effect.Effect<boolean>;
31
+ /**
32
+ * Labels a reply, then builds its result and completes the request if it
33
+ * was pending. `result` runs before the caller wakes, so what it publishes
34
+ * is ordered before anything the caller does next.
35
+ */
36
+ readonly settle: (id: string, generation: bigint, result: (correlation: Correlation) => Effect.Effect<A, ReactorError>, stage?: "acknowledged" | "replied") => Effect.Effect<Correlation>;
37
+ readonly failGeneration: (generation: bigint, failure: ReactorError) => Effect.Effect<void>;
38
+ }
39
+ export declare const make: <A>(options: {
40
+ readonly prefix: "data" | "ctrl";
41
+ /** Requests awaiting a reply at once. */
42
+ readonly limit: number;
43
+ /** Distinguishes this client's ids from another's on a shared session. */
44
+ readonly namespace: string;
45
+ }) => Effect.Effect<Correlator<A>>;
46
+ //# sourceMappingURL=correlator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correlator.d.ts","sourceRoot":"","sources":["../../src/internal/correlator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,4DAA4D;AAC5D,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,MAAM,GACN,WAAW,GACX,aAAa,GACb,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;CACvD;AAsBD,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjE;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,CACf,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,EACpE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,KAC/B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC7F;AAuCD,eAAO,MAAM,IAAI,GAAI,CAAC,WAAW;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAoI5B,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Request/reply correlation for the Reactor wire.
3
+ *
4
+ * Effect's `RpcClient` does not fit this wire: it drops a late or second
5
+ * reply, forgets a request whose caller was interrupted and has no bound. A
6
+ * model command is paid and has no cancel message, so a reply must stay
7
+ * attributable after its caller stops waiting. Requests are registered before
8
+ * they are sent, replies are labelled rather than dropped, and retiring a
9
+ * generation fails its requests with their dispatch outcome.
10
+ */
11
+ import * as Deferred from "effect/Deferred";
12
+ import * as Effect from "effect/Effect";
13
+ import * as Ref from "effect/Ref";
14
+ import { ReactorError } from "../ReactorError.js";
15
+ const remember = (state, id, generation, completion) => {
16
+ const recent = new Map(state.recent).set(id, { generation, completion });
17
+ if (recent.size > 256) {
18
+ const oldest = recent.keys().next();
19
+ if (oldest.done !== true)
20
+ recent.delete(oldest.value);
21
+ }
22
+ return recent;
23
+ };
24
+ /** How a reply on `generation` relates to its request, pending or recently completed. */
25
+ const correlationOf = (entry, recent, generation, stage) => {
26
+ if (entry !== undefined) {
27
+ if (entry.pending.generation !== generation)
28
+ return "stale-generation";
29
+ return entry.waiting ? "matched" : "late";
30
+ }
31
+ if (recent === undefined)
32
+ return "late-or-unknown";
33
+ if (recent.generation !== generation)
34
+ return "stale-generation";
35
+ if (recent.completion === "acknowledged" && stage === "replied")
36
+ return "late";
37
+ return recent.completion === "cancelled" ? "late-or-unknown" : "duplicate";
38
+ };
39
+ const without = (pending, id) => {
40
+ const next = new Map(pending);
41
+ next.delete(id);
42
+ return next;
43
+ };
44
+ export const make = (options) => Effect.map(Ref.make({ counter: 0n, pending: new Map(), recent: new Map() }), (state) => {
45
+ const update = (pending, change) => Ref.update(state, (current) => {
46
+ const entry = current.pending.get(pending.id);
47
+ return entry?.pending === pending
48
+ ? { ...current, pending: new Map(current.pending).set(pending.id, change(entry)) }
49
+ : current;
50
+ });
51
+ const entryOf = (pending) => Effect.map(Ref.get(state), (current) => {
52
+ const entry = current.pending.get(pending.id);
53
+ return entry?.pending === pending ? entry : undefined;
54
+ });
55
+ return {
56
+ size: Effect.map(Ref.get(state), (current) => current.pending.size),
57
+ register: Effect.fnUntraced(function* (generation, operation) {
58
+ const deferred = yield* Deferred.make();
59
+ const pending = yield* Ref.modify(state, (current) => {
60
+ if (current.pending.size >= options.limit)
61
+ return [undefined, current];
62
+ const counter = current.counter + 1n;
63
+ const id = `${options.prefix}_${options.namespace}_${String(counter)}`;
64
+ const pending = { id, generation, operation, deferred };
65
+ return [
66
+ pending,
67
+ {
68
+ ...current,
69
+ counter,
70
+ pending: new Map(current.pending).set(id, {
71
+ pending,
72
+ submitted: false,
73
+ waiting: true,
74
+ }),
75
+ },
76
+ ];
77
+ });
78
+ if (pending === undefined)
79
+ return yield* ReactorError.fromCode("Overflow", "pending request bound reached", {
80
+ operation,
81
+ outcome: "not-submitted",
82
+ });
83
+ return pending;
84
+ }),
85
+ submitted: (pending) => update(pending, (entry) => ({ ...entry, submitted: true })),
86
+ isSubmitted: (pending) => Effect.map(entryOf(pending), (entry) => entry?.submitted === true),
87
+ isPending: (pending) => Effect.map(entryOf(pending), (entry) => entry !== undefined),
88
+ abandon: (pending) => update(pending, (entry) => ({ ...entry, waiting: false })),
89
+ cancel: (pending) => Ref.modify(state, (current) => current.pending.get(pending.id)?.pending === pending
90
+ ? [
91
+ true,
92
+ {
93
+ ...current,
94
+ pending: without(current.pending, pending.id),
95
+ recent: remember(current, pending.id, pending.generation, "cancelled"),
96
+ },
97
+ ]
98
+ : [false, current]),
99
+ settle: Effect.fnUntraced(function* (id, generation, result, stage = "replied") {
100
+ const [correlation, matched] = yield* Ref.modify(state, (current) => {
101
+ const entry = current.pending.get(id);
102
+ const recent = current.recent.get(id);
103
+ const correlation = id === "" ? "unsolicited" : correlationOf(entry, recent, generation, stage);
104
+ if (entry !== undefined && (correlation === "matched" || correlation === "late"))
105
+ return [
106
+ [correlation, entry.pending],
107
+ {
108
+ ...current,
109
+ pending: without(current.pending, id),
110
+ recent: remember(current, id, generation, stage),
111
+ },
112
+ ];
113
+ // An acknowledgement and a later model payload are two facts.
114
+ if (correlation === "late" && recent?.completion === "acknowledged")
115
+ return [
116
+ [correlation, undefined],
117
+ { ...current, recent: remember(current, id, generation, "replied") },
118
+ ];
119
+ return [[correlation, undefined], current];
120
+ });
121
+ const completion = yield* Effect.exit(result(correlation));
122
+ if (matched !== undefined)
123
+ yield* Deferred.done(matched.deferred, completion);
124
+ return correlation;
125
+ }),
126
+ failGeneration: Effect.fnUntraced(function* (generation, failure) {
127
+ const retired = yield* Ref.modify(state, (current) => {
128
+ const retired = [...current.pending.values()].filter((entry) => entry.pending.generation === generation);
129
+ let recent = current.recent;
130
+ const pending = new Map(current.pending);
131
+ for (const entry of retired) {
132
+ pending.delete(entry.pending.id);
133
+ recent = remember({ ...current, recent }, entry.pending.id, generation, "cancelled");
134
+ }
135
+ return [retired, { ...current, pending, recent }];
136
+ });
137
+ yield* Effect.forEach(retired, (entry) => Deferred.fail(entry.pending.deferred, ReactorError.make({
138
+ reason: failure.reason,
139
+ context: {
140
+ ...failure.context,
141
+ operation: entry.pending.operation,
142
+ requestId: entry.pending.id,
143
+ generation,
144
+ outcome: entry.submitted ? "unknown" : "not-submitted",
145
+ },
146
+ })), { discard: true });
147
+ }),
148
+ };
149
+ });
150
+ //# sourceMappingURL=correlator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correlator.js","sourceRoot":"","sources":["../../src/internal/correlator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * A deadline a caller names in an option, in any `Duration.Input` form,
3
+ * decoded once where it comes in. `Duration` reads a NaN as zero and keeps a
4
+ * negative or infinite number as it is, so every numeric form is checked
5
+ * finite before it becomes a duration, and the duration must be finite and
6
+ * not negative.
7
+ */
8
+ import * as Duration from "effect/Duration";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Schema from "effect/Schema";
11
+ import { ReactorError } from "../ReactorError.js";
12
+ export declare const Deadline: Schema.Union<readonly [Schema.Duration, Schema.DurationFromString, Schema.DurationFromNanos, Schema.decodeTo<Schema.Duration, Schema.Finite, never, never>, Schema.decodeTo<Schema.Duration, Schema.Tuple<readonly [Schema.Finite, Schema.Finite]>, never, never>, Schema.decodeTo<Schema.Duration, Schema.Struct<{
13
+ readonly weeks: Schema.optional<Schema.Finite>;
14
+ readonly days: Schema.optional<Schema.Finite>;
15
+ readonly hours: Schema.optional<Schema.Finite>;
16
+ readonly minutes: Schema.optional<Schema.Finite>;
17
+ readonly seconds: Schema.optional<Schema.Finite>;
18
+ readonly milliseconds: Schema.optional<Schema.Finite>;
19
+ readonly microseconds: Schema.optional<Schema.Finite>;
20
+ readonly nanoseconds: Schema.optional<Schema.Finite>;
21
+ }>, never, never>]>;
22
+ /** A decoder of the option `name`: anything but a finite, non-negative duration is `InvalidInput`. */
23
+ export declare const decode: (name: string) => (input: Duration.Input) => Effect.Effect<Duration.Duration, ReactorError>;
24
+ //# sourceMappingURL=deadline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadline.d.ts","sourceRoot":"","sources":["../../src/internal/deadline.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAiBlD,eAAO,MAAM,QAAQ;;;;;;;;;mBAwBpB,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,MAAM,SACV,MAAM,aACL,QAAQ,CAAC,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAQnE,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * A deadline a caller names in an option, in any `Duration.Input` form,
3
+ * decoded once where it comes in. `Duration` reads a NaN as zero and keeps a
4
+ * negative or infinite number as it is, so every numeric form is checked
5
+ * finite before it becomes a duration, and the duration must be finite and
6
+ * not negative.
7
+ */
8
+ import * as Duration from "effect/Duration";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Schema from "effect/Schema";
11
+ import * as SchemaGetter from "effect/SchemaGetter";
12
+ import * as SchemaIssue from "effect/SchemaIssue";
13
+ import * as SchemaTransformation from "effect/SchemaTransformation";
14
+ import { ReactorError } from "../ReactorError.js";
15
+ /** A tuple or object form, which `Duration` reads without a Schema of its own. */
16
+ const parts = (form) => form.pipe(Schema.decodeTo(Schema.Duration, {
17
+ decode: SchemaGetter.transformEffect((input) => Effect.fromOption(Duration.fromInput(input)).pipe(Effect.mapError(() => new SchemaIssue.InvalidValue({ message: "not a duration" }, input)))),
18
+ encode: SchemaGetter.forbidden(() => "a deadline is only decoded"),
19
+ }));
20
+ const Finite = Schema.optional(Schema.Finite);
21
+ export const Deadline = Schema.Union([
22
+ Schema.Duration,
23
+ Schema.DurationFromString,
24
+ Schema.DurationFromNanos,
25
+ Schema.Finite.pipe(Schema.decodeTo(Schema.Duration, SchemaTransformation.durationFromMillis)),
26
+ parts(Schema.Tuple([Schema.Finite, Schema.Finite])),
27
+ parts(Schema.Struct({
28
+ weeks: Finite,
29
+ days: Finite,
30
+ hours: Finite,
31
+ minutes: Finite,
32
+ seconds: Finite,
33
+ milliseconds: Finite,
34
+ microseconds: Finite,
35
+ nanoseconds: Finite,
36
+ })),
37
+ ]).check(Schema.makeFilter((duration) => (Duration.isFinite(duration) && !Duration.isNegative(duration)) ||
38
+ "a finite duration that is not negative"));
39
+ /** A decoder of the option `name`: anything but a finite, non-negative duration is `InvalidInput`. */
40
+ export const decode = (name) => (input) => Schema.decodeEffect(Deadline)(input).pipe(Effect.mapError((cause) => ReactorError.fromCode("InvalidInput", `${name} is not a finite, non-negative duration`, {
41
+ outcome: "not-submitted",
42
+ detail: cause,
43
+ })));
44
+ //# sourceMappingURL=deadline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../../src/internal/deadline.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,kFAAkF;AAClF,MAAM,KAAK,GAAG,CAAyD,IAAO,EAAE,EAAE,CAChF,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,KAAqB,EAAE,EAAE,CAC7D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC,CAC1F,CACF;IACD,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC;CACnE,CAAC,CACH,CAAC;AAEJ,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,CAAC,QAAQ;IACf,MAAM,CAAC,kBAAkB;IACzB,MAAM,CAAC,iBAAiB;IACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAC7F,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,CACH,MAAM,CAAC,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,MAAM;QACpB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM;KACpB,CAAC,CACH;CACF,CAAC,CAAC,KAAK,CACN,MAAM,CAAC,UAAU,CACf,CAAC,QAAQ,EAAE,EAAE,CACX,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/D,wCAAwC,CAC3C,CACF,CAAC;AAEF,sGAAsG;AACtG,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,KAAqB,EAAkD,EAAE,CACxE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,yCAAyC,EAAE;IACtF,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,KAAK;CACd,CAAC,CACH,CACF,CAAC"}
@@ -1,10 +1,16 @@
1
+ /**
2
+ * H3's commands: each one's arguments and the message it replies with, and
3
+ * the check that a deployment's OpenAPI document offers them.
4
+ */
5
+ import * as Result from "effect/Result";
1
6
  import * as Schema from "effect/Schema";
2
- import type { MessageType } from "../messages.js";
7
+ import { ReactorError } from "../../ReactorError.js";
8
+ import type { MessageType } from "./messages.js";
9
+ import { documentedVersion, modelName } from "./profile.js";
3
10
  /**
4
- * One command-to-reply authority for deployment admission and client calls.
5
- * Required keys describe what this adapter always supplies, not what a server
6
- * must require. Nullable parameters describe the documented deployment shape;
7
- * the adapter's outgoing arguments omit null and retain its existing validators.
11
+ * One command-to-reply authority for the client, the simulated model and the
12
+ * deployment check. Required keys are what this adapter always sends;
13
+ * nullable parameters follow the documented deployment shape.
8
14
  */
9
15
  export declare const Commands: {
10
16
  readonly enqueue: {
@@ -22,7 +28,7 @@ export declare const Commands: {
22
28
  readonly mime_type: Schema.String;
23
29
  readonly size: Schema.Int;
24
30
  }>>>>;
25
- readonly seconds: Schema.optionalKey<Schema.NullOr<Schema.Number>>;
31
+ readonly seconds: Schema.optionalKey<Schema.NullOr<Schema.Finite>>;
26
32
  readonly seed: Schema.optionalKey<Schema.NullOr<Schema.Int>>;
27
33
  readonly position: Schema.optionalKey<Schema.NullOr<Schema.Int>>;
28
34
  readonly metadata: Schema.String;
@@ -61,7 +67,7 @@ export declare const Commands: {
61
67
  };
62
68
  readonly set_clip_seconds: {
63
69
  readonly args: Schema.Struct<{
64
- readonly seconds: Schema.Number;
70
+ readonly seconds: Schema.Finite;
65
71
  }>;
66
72
  readonly reply: "clip_length_accepted";
67
73
  };
@@ -105,32 +111,32 @@ export type ReplyCommand = {
105
111
  }[CommandName];
106
112
  export type ReplyType<K extends ReplyCommand> = (typeof Commands)[K]["reply"];
107
113
  export type ControlCommand = Exclude<CommandName, ReplyCommand>;
108
- /** Only the structural subset already required by H3 deployment admission. */
109
- export interface Shape {
110
- readonly type: "string" | "number" | "integer" | "boolean" | "object" | "array";
111
- readonly nullable?: boolean;
112
- readonly fields?: Readonly<Record<string, Shape>>;
113
- readonly required?: readonly string[];
114
- readonly items?: Shape;
114
+ /** What this adapter supports, and what the deployment it checked declares. */
115
+ export interface Contract {
116
+ readonly modelName: typeof modelName;
117
+ readonly documentedVersion: typeof documentedVersion;
118
+ readonly source: string;
119
+ /**
120
+ * Whether the deployment's `enqueue` declares `reference_audios`. When it
121
+ * does not, a request with audio is refused as `UnsupportedCapability`
122
+ * before anything is uploaded or sent.
123
+ */
124
+ readonly referenceAudio: boolean;
125
+ /**
126
+ * The commands the deployment offers. One it lacks fails its operation as
127
+ * `UnsupportedCapability` before anything is sent.
128
+ */
129
+ readonly commands: ReadonlySet<CommandName>;
130
+ readonly deployment: {
131
+ readonly title: string | null;
132
+ readonly version: string | null;
133
+ };
115
134
  }
116
- export declare const messageShapes: Readonly<Record<MessageType, Shape>>;
117
135
  /**
118
- * Arguments a request sends only when it uses them, and that a deployment may
119
- * leave undeclared: it is then admitted without that capability. When it
120
- * declares one, the declaration must have the shape above.
136
+ * Admits a deployment whose OpenAPI document offers the commands a provider
137
+ * needs to start, and records which others it offers. Payloads are checked
138
+ * where they arrive: a message that does not match its Schema fails the
139
+ * provider as `Protocol`.
121
140
  */
122
- export declare const capabilityArguments: Partial<Record<CommandName, readonly string[]>>;
123
- export declare const deploymentCommands: {
124
- name: string;
125
- args: {
126
- type: "string" | "number" | "integer" | "boolean" | "object" | "array";
127
- nullable?: boolean;
128
- fields?: Readonly<Record<string, Shape>>;
129
- items?: Shape;
130
- required: never[];
131
- };
132
- supplied: readonly string[];
133
- capabilities: readonly string[];
134
- reply: "autoplay_accepted" | "canvas_accepted" | "clip_length_accepted" | "clip_moved" | "clip_popped" | "clip_queued" | "flush_accepted" | "queue_update" | "seed_accepted" | "session_reset" | "state_update" | null;
135
- }[];
136
- //# sourceMappingURL=contracts.d.ts.map
141
+ export declare const deploymentContract: (openapi: Schema.Json | undefined) => Result.Result<Contract, ReactorError>;
142
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/internal/h3/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAU,MAAM,cAAc,CAAC;AAUpE;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;iBAEjB,IAAI;;;;;;;;;;;;;;;;;;;;iBAUJ,KAAK,EAAE,aAAa;;;iBAGpB,IAAI;;;;iBACJ,KAAK,EAAE,YAAY;;;iBAEd,IAAI;;;iBAA6C,KAAK,EAAE,aAAa;;;iBACpE,IAAI;;;iBAA6C,KAAK;;;iBACtD,IAAI;iBAAe,KAAK;;;iBACpB,IAAI;;;iBAAuC,KAAK,EAAE,eAAe;;;iBAE3E,IAAI;;;iBACJ,KAAK,EAAE,sBAAsB;;;iBAEjB,IAAI;;;iBAA4C,KAAK,EAAE,iBAAiB;;;iBACtE,IAAI;;;iBAA8C,KAAK,EAAE,mBAAmB;;;iBAE1F,IAAI;;;iBACJ,KAAK,EAAE,gBAAgB;;;iBAEZ,IAAI;iBAAe,KAAK,EAAE,cAAc;;;iBACxC,IAAI;iBAAe,KAAK,EAAE,cAAc;;;iBAC5C,IAAI;iBAAe,KAAK,EAAE,eAAe;;CAGnD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,QAAQ,CAAC;AAChD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI;IAC/C,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CACjE,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACvC,IAAI,CACL;CACF,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;KACxB,CAAC,IAAI,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,WAAW,GAAG,CAAC,GAAG,KAAK;CAClF,CAAC,WAAW,CAAC,CAAC;AACf,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAKhE,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,SAAS,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACzF;AAoCD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,CAAC,IAAI,GAAG,SAAS,KAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAyCnC,CAAC"}