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.
- package/NOTICE +7 -2
- package/README.md +103 -141
- package/dist/Coordinator.d.ts +382 -0
- package/dist/Coordinator.d.ts.map +1 -0
- package/dist/Coordinator.js +732 -0
- package/dist/Coordinator.js.map +1 -0
- package/dist/H3.d.ts +159 -0
- package/dist/H3.d.ts.map +1 -0
- package/dist/H3.js +21 -0
- package/dist/H3.js.map +1 -0
- package/dist/H3Source.d.ts +93 -0
- package/dist/H3Source.d.ts.map +1 -0
- package/dist/H3Source.js +401 -0
- package/dist/H3Source.js.map +1 -0
- package/dist/LocalSource.d.ts +68 -0
- package/dist/LocalSource.d.ts.map +1 -0
- package/dist/LocalSource.js +354 -0
- package/dist/LocalSource.js.map +1 -0
- package/dist/Media.d.ts +106 -0
- package/dist/Media.d.ts.map +1 -0
- package/dist/Media.js +16 -0
- package/dist/Media.js.map +1 -0
- package/dist/Peer.d.ts +134 -0
- package/dist/Peer.d.ts.map +1 -0
- package/dist/Peer.js +57 -0
- package/dist/Peer.js.map +1 -0
- package/dist/Playout.d.ts +724 -0
- package/dist/Playout.d.ts.map +1 -0
- package/dist/Playout.js +28 -0
- package/dist/Playout.js.map +1 -0
- package/dist/Reactor.d.ts +135 -0
- package/dist/Reactor.d.ts.map +1 -0
- package/dist/Reactor.js +158 -0
- package/dist/Reactor.js.map +1 -0
- package/dist/ReactorError.d.ts +331 -0
- package/dist/ReactorError.d.ts.map +1 -0
- package/dist/ReactorError.js +316 -0
- package/dist/ReactorError.js.map +1 -0
- package/dist/ReactorTest.d.ts +383 -0
- package/dist/ReactorTest.d.ts.map +1 -0
- package/dist/ReactorTest.js +317 -0
- package/dist/ReactorTest.js.map +1 -0
- package/dist/Session.d.ts +314 -0
- package/dist/Session.d.ts.map +1 -0
- package/dist/Session.js +51 -0
- package/dist/Session.js.map +1 -0
- package/dist/index.d.ts +12 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -11
- package/dist/index.js.map +1 -1
- package/dist/internal/correlator.d.ts +46 -0
- package/dist/internal/correlator.d.ts.map +1 -0
- package/dist/internal/correlator.js +150 -0
- package/dist/internal/correlator.js.map +1 -0
- package/dist/internal/deadline.d.ts +24 -0
- package/dist/internal/deadline.d.ts.map +1 -0
- package/dist/internal/deadline.js +44 -0
- package/dist/internal/deadline.js.map +1 -0
- package/dist/{h3/_internal/contracts.d.ts → internal/h3/commands.d.ts} +39 -33
- package/dist/internal/h3/commands.d.ts.map +1 -0
- package/dist/internal/h3/commands.js +128 -0
- package/dist/internal/h3/commands.js.map +1 -0
- package/dist/{h3 → internal/h3}/messages.d.ts +16 -11
- package/dist/internal/h3/messages.d.ts.map +1 -0
- package/dist/{h3 → internal/h3}/messages.js +19 -31
- package/dist/internal/h3/messages.js.map +1 -0
- package/dist/internal/h3/operations.d.ts +145 -0
- package/dist/internal/h3/operations.d.ts.map +1 -0
- package/dist/internal/h3/operations.js +284 -0
- package/dist/internal/h3/operations.js.map +1 -0
- package/dist/{h3 → internal/h3}/profile.d.ts +63 -65
- package/dist/internal/h3/profile.d.ts.map +1 -0
- package/dist/{h3 → internal/h3}/profile.js +39 -39
- package/dist/internal/h3/profile.js.map +1 -0
- package/dist/internal/h3/provider.d.ts +14 -0
- package/dist/internal/h3/provider.d.ts.map +1 -0
- package/dist/internal/h3/provider.js +672 -0
- package/dist/internal/h3/provider.js.map +1 -0
- package/dist/internal/h3/references.d.ts +68 -0
- package/dist/internal/h3/references.d.ts.map +1 -0
- package/dist/internal/h3/references.js +339 -0
- package/dist/internal/h3/references.js.map +1 -0
- package/dist/internal/h3/request.d.ts +56 -0
- package/dist/internal/h3/request.d.ts.map +1 -0
- package/dist/internal/h3/request.js +70 -0
- package/dist/internal/h3/request.js.map +1 -0
- package/dist/internal/h3/state.d.ts +120 -0
- package/dist/internal/h3/state.d.ts.map +1 -0
- package/dist/internal/h3/state.js +270 -0
- package/dist/internal/h3/state.js.map +1 -0
- package/dist/{Submission.d.ts → internal/h3/submission.d.ts} +1 -3
- package/dist/internal/h3/submission.d.ts.map +1 -0
- package/dist/{Submission.js → internal/h3/submission.js} +1 -9
- package/dist/internal/h3/submission.js.map +1 -0
- package/dist/internal/hub.d.ts +32 -0
- package/dist/internal/hub.d.ts.map +1 -0
- package/dist/internal/hub.js +92 -0
- package/dist/internal/hub.js.map +1 -0
- package/dist/internal/playout/errors.d.ts +51 -0
- package/dist/internal/playout/errors.d.ts.map +1 -0
- package/dist/internal/playout/errors.js +40 -0
- package/dist/internal/playout/errors.js.map +1 -0
- package/dist/internal/playout/policy.d.ts +559 -0
- package/dist/internal/playout/policy.d.ts.map +1 -0
- package/dist/internal/playout/policy.js +2338 -0
- package/dist/internal/playout/policy.js.map +1 -0
- package/dist/internal/playout/runtime.d.ts +28 -0
- package/dist/internal/playout/runtime.d.ts.map +1 -0
- package/dist/internal/playout/runtime.js +766 -0
- package/dist/internal/playout/runtime.js.map +1 -0
- package/dist/internal/playout/tag.d.ts +14 -0
- package/dist/internal/playout/tag.d.ts.map +1 -0
- package/dist/internal/playout/tag.js +43 -0
- package/dist/internal/playout/tag.js.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts +55 -0
- package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/common_pb.js +42 -0
- package/dist/internal/proto/reactor_wire/v1/common_pb.js.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts +160 -0
- package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/control_pb.js +21 -0
- package/dist/internal/proto/reactor_wire/v1/control_pb.js.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts +89 -0
- package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/data_pb.js +20 -0
- package/dist/internal/proto/reactor_wire/v1/data_pb.js.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts +85 -0
- package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/model_pb.js +24 -0
- package/dist/internal/proto/reactor_wire/v1/model_pb.js.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts +190 -0
- package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/platform_pb.js +54 -0
- package/dist/internal/proto/reactor_wire/v1/platform_pb.js.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts +88 -0
- package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts.map +1 -0
- package/dist/internal/proto/reactor_wire/v1/track_pb.js +33 -0
- package/dist/internal/proto/reactor_wire/v1/track_pb.js.map +1 -0
- package/dist/internal/queue.d.ts +4 -0
- package/dist/internal/queue.d.ts.map +1 -0
- package/dist/{_internal → internal}/queue.js +0 -9
- package/dist/internal/queue.js.map +1 -0
- package/dist/internal/reactorTest/coordinator.d.ts +5 -0
- package/dist/internal/reactorTest/coordinator.d.ts.map +1 -0
- package/dist/internal/reactorTest/coordinator.js +178 -0
- package/dist/internal/reactorTest/coordinator.js.map +1 -0
- package/dist/internal/reactorTest/faults.d.ts +172 -0
- package/dist/internal/reactorTest/faults.d.ts.map +1 -0
- package/dist/internal/reactorTest/faults.js +23 -0
- package/dist/internal/reactorTest/faults.js.map +1 -0
- package/dist/internal/reactorTest/h3.d.ts +431 -0
- package/dist/internal/reactorTest/h3.d.ts.map +1 -0
- package/dist/internal/reactorTest/h3.js +625 -0
- package/dist/internal/reactorTest/h3.js.map +1 -0
- package/dist/internal/reactorTest/media.d.ts +22 -0
- package/dist/internal/reactorTest/media.d.ts.map +1 -0
- package/dist/internal/reactorTest/media.js +34 -0
- package/dist/internal/reactorTest/media.js.map +1 -0
- package/dist/internal/reactorTest/peer.d.ts +318 -0
- package/dist/internal/reactorTest/peer.d.ts.map +1 -0
- package/dist/internal/reactorTest/peer.js +206 -0
- package/dist/internal/reactorTest/peer.js.map +1 -0
- package/dist/internal/reactorTest/playout.d.ts +34 -0
- package/dist/internal/reactorTest/playout.d.ts.map +1 -0
- package/dist/internal/reactorTest/playout.js +340 -0
- package/dist/internal/reactorTest/playout.js.map +1 -0
- package/dist/internal/reactorTest/references.d.ts +25 -0
- package/dist/internal/reactorTest/references.d.ts.map +1 -0
- package/dist/{testing/Png.js → internal/reactorTest/references.js} +50 -12
- package/dist/internal/reactorTest/references.js.map +1 -0
- package/dist/internal/reactorTest/sessions.d.ts +364 -0
- package/dist/internal/reactorTest/sessions.d.ts.map +1 -0
- package/dist/internal/reactorTest/sessions.js +592 -0
- package/dist/internal/reactorTest/sessions.js.map +1 -0
- package/dist/internal/reactorTest/timing.d.ts +13 -0
- package/dist/internal/reactorTest/timing.d.ts.map +1 -0
- package/dist/internal/reactorTest/timing.js +20 -0
- package/dist/internal/reactorTest/timing.js.map +1 -0
- package/dist/internal/recording.d.ts +52 -0
- package/dist/internal/recording.d.ts.map +1 -0
- package/dist/internal/recording.js +141 -0
- package/dist/internal/recording.js.map +1 -0
- package/dist/internal/session/connect.d.ts +34 -0
- package/dist/internal/session/connect.d.ts.map +1 -0
- package/dist/internal/session/connect.js +502 -0
- package/dist/internal/session/connect.js.map +1 -0
- package/dist/internal/session/generation.d.ts +35 -0
- package/dist/internal/session/generation.d.ts.map +1 -0
- package/dist/internal/session/generation.js +185 -0
- package/dist/internal/session/generation.js.map +1 -0
- package/dist/internal/session/ice.d.ts +23 -0
- package/dist/internal/session/ice.d.ts.map +1 -0
- package/dist/internal/session/ice.js +57 -0
- package/dist/internal/session/ice.js.map +1 -0
- package/dist/internal/session/inbound.d.ts +50 -0
- package/dist/internal/session/inbound.d.ts.map +1 -0
- package/dist/internal/session/inbound.js +202 -0
- package/dist/internal/session/inbound.js.map +1 -0
- package/dist/internal/session/model.d.ts +163 -0
- package/dist/internal/session/model.d.ts.map +1 -0
- package/dist/internal/session/model.js +78 -0
- package/dist/internal/session/model.js.map +1 -0
- package/dist/internal/session/requests.d.ts +71 -0
- package/dist/internal/session/requests.d.ts.map +1 -0
- package/dist/internal/session/requests.js +240 -0
- package/dist/internal/session/requests.js.map +1 -0
- package/dist/internal/session/tracks.d.ts +21 -0
- package/dist/internal/session/tracks.d.ts.map +1 -0
- package/dist/internal/session/tracks.js +166 -0
- package/dist/internal/session/tracks.js.map +1 -0
- package/dist/internal/session/upload.d.ts +21 -0
- package/dist/internal/session/upload.d.ts.map +1 -0
- package/dist/internal/session/upload.js +68 -0
- package/dist/internal/session/upload.js.map +1 -0
- package/dist/internal/session.d.ts +66 -0
- package/dist/internal/session.d.ts.map +1 -0
- package/dist/internal/session.js +280 -0
- package/dist/internal/session.js.map +1 -0
- package/dist/{stats.d.ts → internal/stats.d.ts} +30 -16
- package/dist/internal/stats.d.ts.map +1 -0
- package/dist/internal/stats.js +201 -0
- package/dist/internal/stats.js.map +1 -0
- package/dist/internal/token.d.ts +22 -0
- package/dist/internal/token.d.ts.map +1 -0
- package/dist/internal/token.js +65 -0
- package/dist/internal/token.js.map +1 -0
- package/dist/internal/wire.d.ts +37 -0
- package/dist/internal/wire.d.ts.map +1 -0
- package/dist/internal/wire.js +49 -0
- package/dist/internal/wire.js.map +1 -0
- package/notices/bufbuild-protobuf-LICENSE +201 -0
- package/package.json +17 -38
- package/dist/FetchHttp.d.ts +0 -9
- package/dist/FetchHttp.d.ts.map +0 -1
- package/dist/FetchHttp.js +0 -63
- package/dist/FetchHttp.js.map +0 -1
- package/dist/PeerFactory.d.ts +0 -26
- package/dist/PeerFactory.d.ts.map +0 -1
- package/dist/PeerFactory.js +0 -4
- package/dist/PeerFactory.js.map +0 -1
- package/dist/PeerTypes.d.ts +0 -64
- package/dist/PeerTypes.d.ts.map +0 -1
- package/dist/PeerTypes.js +0 -2
- package/dist/PeerTypes.js.map +0 -1
- package/dist/Sequence.d.ts +0 -85
- package/dist/Sequence.d.ts.map +0 -1
- package/dist/Sequence.js +0 -210
- package/dist/Sequence.js.map +0 -1
- package/dist/SessionTypes.d.ts +0 -312
- package/dist/SessionTypes.d.ts.map +0 -1
- package/dist/SessionTypes.js +0 -19
- package/dist/SessionTypes.js.map +0 -1
- package/dist/Submission.d.ts.map +0 -1
- package/dist/Submission.js.map +0 -1
- package/dist/_internal/queue.d.ts +0 -6
- package/dist/_internal/queue.d.ts.map +0 -1
- package/dist/_internal/queue.js.map +0 -1
- package/dist/bytes.d.ts +0 -6
- package/dist/bytes.d.ts.map +0 -1
- package/dist/bytes.js +0 -32
- package/dist/bytes.js.map +0 -1
- package/dist/contract.d.ts +0 -149
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -119
- package/dist/contract.js.map +0 -1
- package/dist/coordinator/_internal/client.d.ts +0 -215
- package/dist/coordinator/_internal/client.d.ts.map +0 -1
- package/dist/coordinator/_internal/client.js +0 -563
- package/dist/coordinator/_internal/client.js.map +0 -1
- package/dist/coordinator/_internal/recording.d.ts +0 -31
- package/dist/coordinator/_internal/recording.d.ts.map +0 -1
- package/dist/coordinator/_internal/recording.js +0 -123
- package/dist/coordinator/_internal/recording.js.map +0 -1
- package/dist/coordinator/_internal/response.d.ts +0 -15
- package/dist/coordinator/_internal/response.d.ts.map +0 -1
- package/dist/coordinator/_internal/response.js +0 -55
- package/dist/coordinator/_internal/response.js.map +0 -1
- package/dist/coordinator/_internal/schemas.d.ts +0 -73
- package/dist/coordinator/_internal/schemas.d.ts.map +0 -1
- package/dist/coordinator/_internal/schemas.js +0 -200
- package/dist/coordinator/_internal/schemas.js.map +0 -1
- package/dist/coordinator/index.d.ts +0 -40
- package/dist/coordinator/index.d.ts.map +0 -1
- package/dist/coordinator/index.js +0 -21
- package/dist/coordinator/index.js.map +0 -1
- package/dist/correlation.d.ts +0 -47
- package/dist/correlation.d.ts.map +0 -1
- package/dist/correlation.js +0 -131
- package/dist/correlation.js.map +0 -1
- package/dist/duration.d.ts +0 -27
- package/dist/duration.d.ts.map +0 -1
- package/dist/duration.js +0 -47
- package/dist/duration.js.map +0 -1
- package/dist/errors.d.ts +0 -1303
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -745
- package/dist/errors.js.map +0 -1
- package/dist/h3/_internal/client.d.ts +0 -9
- package/dist/h3/_internal/client.d.ts.map +0 -1
- package/dist/h3/_internal/client.js +0 -652
- package/dist/h3/_internal/client.js.map +0 -1
- package/dist/h3/_internal/contracts.d.ts.map +0 -1
- package/dist/h3/_internal/contracts.js +0 -123
- package/dist/h3/_internal/contracts.js.map +0 -1
- package/dist/h3/_internal/deployment.d.ts +0 -8
- package/dist/h3/_internal/deployment.d.ts.map +0 -1
- package/dist/h3/_internal/deployment.js +0 -149
- package/dist/h3/_internal/deployment.js.map +0 -1
- package/dist/h3/_internal/evidence.d.ts +0 -17
- package/dist/h3/_internal/evidence.d.ts.map +0 -1
- package/dist/h3/_internal/evidence.js +0 -48
- package/dist/h3/_internal/evidence.js.map +0 -1
- package/dist/h3/_internal/operations.d.ts +0 -58
- package/dist/h3/_internal/operations.d.ts.map +0 -1
- package/dist/h3/_internal/operations.js +0 -268
- package/dist/h3/_internal/operations.js.map +0 -1
- package/dist/h3/_internal/references.d.ts +0 -24
- package/dist/h3/_internal/references.d.ts.map +0 -1
- package/dist/h3/_internal/references.js +0 -309
- package/dist/h3/_internal/references.js.map +0 -1
- package/dist/h3/_internal/request.d.ts +0 -21
- package/dist/h3/_internal/request.d.ts.map +0 -1
- package/dist/h3/_internal/request.js +0 -97
- package/dist/h3/_internal/request.js.map +0 -1
- package/dist/h3/_internal/retained.d.ts +0 -22
- package/dist/h3/_internal/retained.d.ts.map +0 -1
- package/dist/h3/_internal/retained.js +0 -89
- package/dist/h3/_internal/retained.js.map +0 -1
- package/dist/h3/_internal/state.d.ts +0 -44
- package/dist/h3/_internal/state.d.ts.map +0 -1
- package/dist/h3/_internal/state.js +0 -283
- package/dist/h3/_internal/state.js.map +0 -1
- package/dist/h3/index.d.ts +0 -10
- package/dist/h3/index.d.ts.map +0 -1
- package/dist/h3/index.js +0 -7
- package/dist/h3/index.js.map +0 -1
- package/dist/h3/messages.d.ts.map +0 -1
- package/dist/h3/messages.js.map +0 -1
- package/dist/h3/profile.d.ts.map +0 -1
- package/dist/h3/profile.js.map +0 -1
- package/dist/h3/types.d.ts +0 -291
- package/dist/h3/types.d.ts.map +0 -1
- package/dist/h3/types.js +0 -2
- package/dist/h3/types.js.map +0 -1
- package/dist/host.d.ts +0 -26
- package/dist/host.d.ts.map +0 -1
- package/dist/host.js +0 -20
- package/dist/host.js.map +0 -1
- package/dist/json.d.ts +0 -25
- package/dist/json.d.ts.map +0 -1
- package/dist/json.js +0 -143
- package/dist/json.js.map +0 -1
- package/dist/media-stream.d.ts +0 -10
- package/dist/media-stream.d.ts.map +0 -1
- package/dist/media-stream.js +0 -18
- package/dist/media-stream.js.map +0 -1
- package/dist/observation.d.ts +0 -38
- package/dist/observation.d.ts.map +0 -1
- package/dist/observation.js +0 -113
- package/dist/observation.js.map +0 -1
- package/dist/orchestration/elapsed.d.ts +0 -9
- package/dist/orchestration/elapsed.d.ts.map +0 -1
- package/dist/orchestration/elapsed.js +0 -8
- package/dist/orchestration/elapsed.js.map +0 -1
- package/dist/orchestration/h3-source.d.ts +0 -58
- package/dist/orchestration/h3-source.d.ts.map +0 -1
- package/dist/orchestration/h3-source.js +0 -362
- package/dist/orchestration/h3-source.js.map +0 -1
- package/dist/orchestration/index.d.ts +0 -17
- package/dist/orchestration/index.d.ts.map +0 -1
- package/dist/orchestration/index.js +0 -12
- package/dist/orchestration/index.js.map +0 -1
- package/dist/orchestration/media-buffer.d.ts +0 -32
- package/dist/orchestration/media-buffer.d.ts.map +0 -1
- package/dist/orchestration/media-buffer.js +0 -94
- package/dist/orchestration/media-buffer.js.map +0 -1
- package/dist/orchestration/open-h3.d.ts +0 -101
- package/dist/orchestration/open-h3.d.ts.map +0 -1
- package/dist/orchestration/open-h3.js +0 -127
- package/dist/orchestration/open-h3.js.map +0 -1
- package/dist/orchestration/queries.d.ts +0 -10
- package/dist/orchestration/queries.d.ts.map +0 -1
- package/dist/orchestration/queries.js +0 -43
- package/dist/orchestration/queries.js.map +0 -1
- package/dist/orchestration/references.d.ts +0 -18
- package/dist/orchestration/references.d.ts.map +0 -1
- package/dist/orchestration/references.js +0 -79
- package/dist/orchestration/references.js.map +0 -1
- package/dist/orchestration/renewal-state.d.ts +0 -84
- package/dist/orchestration/renewal-state.d.ts.map +0 -1
- package/dist/orchestration/renewal-state.js +0 -95
- package/dist/orchestration/renewal-state.js.map +0 -1
- package/dist/orchestration/renewal.d.ts +0 -103
- package/dist/orchestration/renewal.d.ts.map +0 -1
- package/dist/orchestration/renewal.js +0 -1088
- package/dist/orchestration/renewal.js.map +0 -1
- package/dist/orchestration/request.d.ts +0 -65
- package/dist/orchestration/request.d.ts.map +0 -1
- package/dist/orchestration/request.js +0 -134
- package/dist/orchestration/request.js.map +0 -1
- package/dist/orchestration/retention.d.ts +0 -100
- package/dist/orchestration/retention.d.ts.map +0 -1
- package/dist/orchestration/retention.js +0 -134
- package/dist/orchestration/retention.js.map +0 -1
- package/dist/orchestration/routing.d.ts +0 -21
- package/dist/orchestration/routing.d.ts.map +0 -1
- package/dist/orchestration/routing.js +0 -93
- package/dist/orchestration/routing.js.map +0 -1
- package/dist/orchestration/scheduler-key.d.ts +0 -14
- package/dist/orchestration/scheduler-key.d.ts.map +0 -1
- package/dist/orchestration/scheduler-key.js +0 -62
- package/dist/orchestration/scheduler-key.js.map +0 -1
- package/dist/orchestration/scheduler-policy.d.ts +0 -222
- package/dist/orchestration/scheduler-policy.d.ts.map +0 -1
- package/dist/orchestration/scheduler-policy.js +0 -582
- package/dist/orchestration/scheduler-policy.js.map +0 -1
- package/dist/orchestration/scheduler.d.ts +0 -383
- package/dist/orchestration/scheduler.d.ts.map +0 -1
- package/dist/orchestration/scheduler.js +0 -2597
- package/dist/orchestration/scheduler.js.map +0 -1
- package/dist/orchestration/source-slot.d.ts +0 -124
- package/dist/orchestration/source-slot.d.ts.map +0 -1
- package/dist/orchestration/source-slot.js +0 -348
- package/dist/orchestration/source-slot.js.map +0 -1
- package/dist/orchestration/types.d.ts +0 -1462
- package/dist/orchestration/types.d.ts.map +0 -1
- package/dist/orchestration/types.js +0 -135
- package/dist/orchestration/types.js.map +0 -1
- package/dist/protobuf.d.ts +0 -63
- package/dist/protobuf.d.ts.map +0 -1
- package/dist/protobuf.js +0 -252
- package/dist/protobuf.js.map +0 -1
- package/dist/session/_internal/acquire.d.ts +0 -21
- package/dist/session/_internal/acquire.d.ts.map +0 -1
- package/dist/session/_internal/acquire.js +0 -168
- package/dist/session/_internal/acquire.js.map +0 -1
- package/dist/session/_internal/cleanup.d.ts +0 -19
- package/dist/session/_internal/cleanup.d.ts.map +0 -1
- package/dist/session/_internal/cleanup.js +0 -102
- package/dist/session/_internal/cleanup.js.map +0 -1
- package/dist/session/_internal/lifecycle.d.ts +0 -67
- package/dist/session/_internal/lifecycle.d.ts.map +0 -1
- package/dist/session/_internal/lifecycle.js +0 -142
- package/dist/session/_internal/lifecycle.js.map +0 -1
- package/dist/session/_internal/remote.d.ts +0 -28
- package/dist/session/_internal/remote.d.ts.map +0 -1
- package/dist/session/_internal/remote.js +0 -71
- package/dist/session/_internal/remote.js.map +0 -1
- package/dist/session/_internal/uploads.d.ts +0 -7
- package/dist/session/_internal/uploads.d.ts.map +0 -1
- package/dist/session/_internal/uploads.js +0 -31
- package/dist/session/_internal/uploads.js.map +0 -1
- package/dist/session/commands.d.ts +0 -2
- package/dist/session/commands.d.ts.map +0 -1
- package/dist/session/commands.js +0 -2
- package/dist/session/commands.js.map +0 -1
- package/dist/session/files.d.ts +0 -21
- package/dist/session/files.d.ts.map +0 -1
- package/dist/session/files.js +0 -49
- package/dist/session/files.js.map +0 -1
- package/dist/session/index.d.ts +0 -84
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -16
- package/dist/session/index.js.map +0 -1
- package/dist/session/media.d.ts +0 -114
- package/dist/session/media.d.ts.map +0 -1
- package/dist/session/media.js +0 -2
- package/dist/session/media.js.map +0 -1
- package/dist/session/recorder.d.ts +0 -24
- package/dist/session/recorder.d.ts.map +0 -1
- package/dist/session/recorder.js +0 -19
- package/dist/session/recorder.js.map +0 -1
- package/dist/session.d.ts +0 -105
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -976
- package/dist/session.js.map +0 -1
- package/dist/simulation/_internal/source.d.ts +0 -12
- package/dist/simulation/_internal/source.d.ts.map +0 -1
- package/dist/simulation/_internal/source.js +0 -513
- package/dist/simulation/_internal/source.js.map +0 -1
- package/dist/simulation/index.d.ts +0 -13
- package/dist/simulation/index.d.ts.map +0 -1
- package/dist/simulation/index.js +0 -12
- package/dist/simulation/index.js.map +0 -1
- package/dist/simulation/types.d.ts +0 -39
- package/dist/simulation/types.d.ts.map +0 -1
- package/dist/simulation/types.js +0 -2
- package/dist/simulation/types.js.map +0 -1
- package/dist/stats.d.ts.map +0 -1
- package/dist/stats.js +0 -205
- package/dist/stats.js.map +0 -1
- package/dist/testing/Faults.d.ts +0 -4
- package/dist/testing/Faults.d.ts.map +0 -1
- package/dist/testing/Faults.js +0 -7
- package/dist/testing/Faults.js.map +0 -1
- package/dist/testing/Png.d.ts +0 -3
- package/dist/testing/Png.d.ts.map +0 -1
- package/dist/testing/Png.js.map +0 -1
- package/dist/testing/Wav.d.ts +0 -14
- package/dist/testing/Wav.d.ts.map +0 -1
- package/dist/testing/Wav.js +0 -37
- package/dist/testing/Wav.js.map +0 -1
- package/dist/testing/index.d.ts +0 -5
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -4
- package/dist/testing/index.js.map +0 -1
- package/dist/wire.d.ts +0 -7
- package/dist/wire.d.ts.map +0 -1
- package/dist/wire.generated.d.ts +0 -305
- package/dist/wire.generated.d.ts.map +0 -1
- package/dist/wire.generated.js +0 -1257
- package/dist/wire.generated.js.map +0 -1
- package/dist/wire.js +0 -5
- package/dist/wire.js.map +0 -1
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allocation and connection: create or identify the remote session, then
|
|
3
|
+
* negotiate each connection generation (describe, prepare, register, trickle
|
|
4
|
+
* ICE, offer, answer, ready) within its deadline. A failed attempt fails and
|
|
5
|
+
* closes its generation; a reconnect replaces the previous one and never
|
|
6
|
+
* replays a command. Once acquired, a session with a reconnect policy
|
|
7
|
+
* reconnects each connection it drops on its own, and a reconnect asked for
|
|
8
|
+
* meanwhile joins that one.
|
|
9
|
+
*/
|
|
10
|
+
import * as Cause from "effect/Cause";
|
|
11
|
+
import * as Clock from "effect/Clock";
|
|
12
|
+
import * as Deferred from "effect/Deferred";
|
|
13
|
+
import * as Duration from "effect/Duration";
|
|
14
|
+
import * as Effect from "effect/Effect";
|
|
15
|
+
import * as ErrorReporter from "effect/ErrorReporter";
|
|
16
|
+
import * as Exit from "effect/Exit";
|
|
17
|
+
import * as Option from "effect/Option";
|
|
18
|
+
import * as Predicate from "effect/Predicate";
|
|
19
|
+
import * as PubSub from "effect/PubSub";
|
|
20
|
+
import * as Queue from "effect/Queue";
|
|
21
|
+
import * as Ref from "effect/Ref";
|
|
22
|
+
import * as Schedule from "effect/Schedule";
|
|
23
|
+
import * as Scope from "effect/Scope";
|
|
24
|
+
import * as Stream from "effect/Stream";
|
|
25
|
+
import * as SubscriptionRef from "effect/SubscriptionRef";
|
|
26
|
+
import { ReactorError } from "../../ReactorError.js";
|
|
27
|
+
import { take } from "../queue.js";
|
|
28
|
+
import * as Stats from "../stats.js";
|
|
29
|
+
import { retired } from "./generation.js";
|
|
30
|
+
import { ends, failureOr, isClosing, isKnown, moderationEnded, newLink, timedOut, } from "./model.js";
|
|
31
|
+
/** Marks a connect phase on the current span, as SqlClient marks a transaction's. */
|
|
32
|
+
const phase = (name) => Effect.currentSpan.pipe(Effect.flatMap((span) => Clock.currentTimeNanos.pipe(Effect.map((now) => span.event(`reactor.connect.${name}`, now)))), Effect.ignore);
|
|
33
|
+
/**
|
|
34
|
+
* What a failed create leaves: nothing, when the request was never sent or
|
|
35
|
+
* the coordinator refused it (4xx); an unknown allocation after a server
|
|
36
|
+
* error, a timeout or a lost reply.
|
|
37
|
+
*/
|
|
38
|
+
const afterCreateFailure = (error) => {
|
|
39
|
+
if (error.context.outcome === "not-submitted")
|
|
40
|
+
return undefined;
|
|
41
|
+
const status = error.reason._tag === "Http" ? error.reason.status : undefined;
|
|
42
|
+
const refused = error.context.outcome === "replied" && status !== undefined && status >= 400 && status < 500;
|
|
43
|
+
return refused ? undefined : { ownership: "unknown" };
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* How an attempt fails where it finds the session's close begun: before it allocates or takes the
|
|
47
|
+
* session over, as it waits on another, or as it moves the session on. A close that overtakes its
|
|
48
|
+
* negotiation fails it with `Aborted` instead, as it fails its connection.
|
|
49
|
+
*/
|
|
50
|
+
const closed = () => ReactorError.fromCode("Closed", "session is closed", { outcome: "not-submitted" });
|
|
51
|
+
/** The sessions each attempt may begin a generation in. */
|
|
52
|
+
const beginsFrom = {
|
|
53
|
+
connect: (session) => session.status === "idle",
|
|
54
|
+
// While the session reconnects on its own, a reconnect asked for joins that one.
|
|
55
|
+
reconnect: (session) => (session.status === "ready" || session.status === "disconnected") && !session.reconnecting,
|
|
56
|
+
own: (session) => session.status === "disconnected" && session.reconnecting,
|
|
57
|
+
};
|
|
58
|
+
/** Why `attempt` cannot begin from `session`: closed once the session's close has begun. */
|
|
59
|
+
const refusal = (attempt, session) => isClosing(session.status)
|
|
60
|
+
? closed()
|
|
61
|
+
: ReactorError.fromCode("InvalidState", `${attempt} while ${session.status}`);
|
|
62
|
+
/** Joining the session's own reconnect, found under way in `from`: what follows its drop. */
|
|
63
|
+
const joinsOwn = (from) => ({
|
|
64
|
+
ready: from.status === "disconnected" ? from.generation + 1n : from.generation,
|
|
65
|
+
stop: from.generation,
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Joining whatever replaced the connection a reconnect found in `look` while it made its peer:
|
|
69
|
+
* the look stands for a drop, and only a later generation decides.
|
|
70
|
+
*/
|
|
71
|
+
const joinsAfter = (look) => ({
|
|
72
|
+
ready: look.generation + 1n,
|
|
73
|
+
stop: look.generation + 1n,
|
|
74
|
+
});
|
|
75
|
+
/**
|
|
76
|
+
* Where a reconnect asked for stands at `session` once it has joined `from`: done once a
|
|
77
|
+
* connection it counts is ready, failed at a lasting drop it counts or once the session closes,
|
|
78
|
+
* and undecided until then. A state of an earlier generation is older than what it joined, and
|
|
79
|
+
* decides nothing.
|
|
80
|
+
*/
|
|
81
|
+
const joined = (from) => (session) => {
|
|
82
|
+
if (isClosing(session.status))
|
|
83
|
+
return Exit.fail(closed());
|
|
84
|
+
if (session.status === "ready")
|
|
85
|
+
return session.generation >= from.ready ? Exit.void : undefined;
|
|
86
|
+
const stopped = session.status === "disconnected" && !session.reconnecting && session.generation >= from.stop;
|
|
87
|
+
return stopped
|
|
88
|
+
? Exit.fail(session.lastError ?? ReactorError.fromCode("Aborted", "reconnecting stopped"))
|
|
89
|
+
: undefined;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* How long the session's own reconnect waits on a connection it made ready before it counts the
|
|
93
|
+
* connection as back: one that drops sooner fails that reconnect's attempt.
|
|
94
|
+
*/
|
|
95
|
+
const settle = Duration.seconds(10);
|
|
96
|
+
/** A reconnect out of time; `failure` is why its last attempt, or its last connection, failed. */
|
|
97
|
+
const outOfTime = (failure) => ReactorError.fromCode("Timeout", "reconnect: deadline", { detail: failure });
|
|
98
|
+
export const make = ({ core, generation, ice, inbound, requests, tracks, peers, root, token, closing, resumeTracks, }) => {
|
|
99
|
+
const { intent, settings, signaling, state, publish, transition } = core;
|
|
100
|
+
const { current, guard, reportHost, fail, background } = generation;
|
|
101
|
+
/** Adds what a known remote session has learned; an unknown one stays as it is. */
|
|
102
|
+
const learn = (patch) => SubscriptionRef.update(state, (session) => ({
|
|
103
|
+
...session,
|
|
104
|
+
remote: isKnown(session.remote) ? { ...session.remote, ...patch } : session.remote,
|
|
105
|
+
}));
|
|
106
|
+
/** An allocation interrupted or failed without a verdict leaves an unknown session. */
|
|
107
|
+
const allocationUnknown = SubscriptionRef.update(state, (session) => ({
|
|
108
|
+
...session,
|
|
109
|
+
remote: session.remote?.ownership === "allocating" ? { ownership: "unknown" } : session.remote,
|
|
110
|
+
}));
|
|
111
|
+
const allocate = Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
|
|
112
|
+
const session = yield* SubscriptionRef.get(state);
|
|
113
|
+
if (isClosing(session.status))
|
|
114
|
+
return yield* closed();
|
|
115
|
+
if (isKnown(session.remote))
|
|
116
|
+
return session.remote.id;
|
|
117
|
+
if (session.remote !== undefined)
|
|
118
|
+
return yield* ReactorError.fromCode("InvalidState", "session allocation is already pending or unresolved", { outcome: "unknown" });
|
|
119
|
+
if (intent._tag === "Attach") {
|
|
120
|
+
const remote = {
|
|
121
|
+
ownership: intent.adopt ? "owned" : "attached",
|
|
122
|
+
id: intent.sessionId,
|
|
123
|
+
...(intent.connectionId === undefined ? {} : { connectionId: intent.connectionId }),
|
|
124
|
+
};
|
|
125
|
+
yield* SubscriptionRef.update(state, (held) => ({ ...held, remote }));
|
|
126
|
+
return remote.id;
|
|
127
|
+
}
|
|
128
|
+
yield* SubscriptionRef.update(state, (held) => ({
|
|
129
|
+
...held,
|
|
130
|
+
remote: { ownership: "allocating" },
|
|
131
|
+
}));
|
|
132
|
+
const allocation = yield* restore(signaling
|
|
133
|
+
.create(intent.model, intent.extraArgs)
|
|
134
|
+
.pipe(Effect.raceFirst(Deferred.await(closing)))).pipe(Effect.tapError((error) => SubscriptionRef.update(state, (held) => ({
|
|
135
|
+
...held,
|
|
136
|
+
remote: held.remote?.ownership === "allocating" ? afterCreateFailure(error) : held.remote,
|
|
137
|
+
}))), Effect.onInterrupt(() => allocationUnknown));
|
|
138
|
+
// Ownership rests on the id alone: a reply that cannot describe the
|
|
139
|
+
// session still names one its owner must terminate.
|
|
140
|
+
yield* SubscriptionRef.update(state, (held) => ({
|
|
141
|
+
...held,
|
|
142
|
+
remote: { ownership: "owned", id: allocation.sessionId },
|
|
143
|
+
}));
|
|
144
|
+
yield* token.bind(allocation.sessionId);
|
|
145
|
+
const descriptor = yield* signaling.describe(allocation);
|
|
146
|
+
yield* SubscriptionRef.update(state, (held) => ({
|
|
147
|
+
...held,
|
|
148
|
+
remote: { ownership: "owned", id: allocation.sessionId, descriptor },
|
|
149
|
+
}));
|
|
150
|
+
return allocation.sessionId;
|
|
151
|
+
}));
|
|
152
|
+
/**
|
|
153
|
+
* Closes a peer's `scope` with `exit`. What its host dies of as it shuts the peer down is no
|
|
154
|
+
* attempt's to fail: it is reported on `generation`, the session's current one when omitted.
|
|
155
|
+
*/
|
|
156
|
+
const shutDown = (scope, exit, generation) => Scope.close(scope, exit).pipe(Effect.catchCause((cause) => reportHost(cause, generation)));
|
|
157
|
+
/**
|
|
158
|
+
* Fails `c` for `cause`, the attempt's own failure if it has one, and closes it: the attempt
|
|
159
|
+
* fails with that alone, and its host's shutdown is reported on `c`'s generation.
|
|
160
|
+
*/
|
|
161
|
+
const abandon = (c, cause) => fail(c, failureOr(() => ReactorError.fromCode("Aborted", "connection attempt stopped"))(cause)).pipe(Effect.ensuring(shutDown(c.scope, Exit.void, c.generation)));
|
|
162
|
+
/**
|
|
163
|
+
* Retires `previous` for the generation that replaced it. Its host's shutdown is not the new
|
|
164
|
+
* attempt's to fail: it is reported on the retired generation.
|
|
165
|
+
*/
|
|
166
|
+
const retire = (previous) => fail(previous, ReactorError.fromCode("Disconnected", "connection retired for reconnect")).pipe(Effect.ensuring(shutDown(previous.scope, Exit.void, previous.generation)));
|
|
167
|
+
/**
|
|
168
|
+
* A reconnect asked for that joined `from` rather than begin a generation: it waits on `states`,
|
|
169
|
+
* every state since before it looked, until what it joined decides it.
|
|
170
|
+
*/
|
|
171
|
+
const join = (from, states) => Stream.fromSubscription(states).pipe(Stream.map(joined(from)), Stream.filter(Predicate.isNotUndefined), Stream.runHead, Effect.flatMap(Option.getOrThrow));
|
|
172
|
+
/**
|
|
173
|
+
* A new generation, with its event fiber; the previous one is retired. It takes the session over
|
|
174
|
+
* in one step with its checks, so no two attempts share a generation and none begins once the
|
|
175
|
+
* session closes. The session's own reconnect begins nothing once another attempt, a ready
|
|
176
|
+
* connection or the close has taken over. A reconnect asked for while the session reconnects on
|
|
177
|
+
* its own begins nothing either: it joins that reconnect, watched from before it looks. Nor does
|
|
178
|
+
* one whose connection another attempt replaced while it made its peer, the session's own
|
|
179
|
+
* reconnect say: it joins whatever came after the connection it looked at, unless that attempt is
|
|
180
|
+
* another reconnect asked for still under way, which refuses it as at the look. The session's own
|
|
181
|
+
* attempt keeps the generation it claims in `began` as it claims it. An attempt acquires it
|
|
182
|
+
* uninterruptibly, so every generation it claims is one the attempt fails and closes if it goes
|
|
183
|
+
* no further, a defect as it takes over included.
|
|
184
|
+
*/
|
|
185
|
+
const begin = Effect.fnUntraced(function* (attempt, began) {
|
|
186
|
+
const states = attempt === "reconnect" ? yield* PubSub.subscribe(state.pubsub) : undefined;
|
|
187
|
+
const session = yield* SubscriptionRef.get(state);
|
|
188
|
+
const reconnect = attempt !== "connect";
|
|
189
|
+
if (!beginsFrom[attempt](session)) {
|
|
190
|
+
if (states !== undefined && session.reconnecting)
|
|
191
|
+
return { joins: join(joinsOwn(session), states) };
|
|
192
|
+
if (attempt === "own")
|
|
193
|
+
return undefined;
|
|
194
|
+
return yield* refusal(attempt, session);
|
|
195
|
+
}
|
|
196
|
+
if (reconnect && !isKnown(session.remote))
|
|
197
|
+
return yield* ReactorError.fromCode("InvalidState", "cannot reconnect without a known session");
|
|
198
|
+
if (reconnect && session.moderated)
|
|
199
|
+
return yield* moderationEnded({ outcome: "not-submitted" });
|
|
200
|
+
const scope = yield* Scope.fork(root);
|
|
201
|
+
const peer = yield* Scope.provide(peers.make, scope).pipe(Effect.onError((cause) => shutDown(scope, Exit.failCause(cause))));
|
|
202
|
+
const c = {
|
|
203
|
+
generation: session.generation + 1n,
|
|
204
|
+
scope,
|
|
205
|
+
peer,
|
|
206
|
+
ready: yield* Deferred.make(),
|
|
207
|
+
failed: yield* Deferred.make(),
|
|
208
|
+
events: yield* Queue.unbounded(),
|
|
209
|
+
iceWake: yield* Queue.dropping(1),
|
|
210
|
+
link: yield* Ref.make(newLink),
|
|
211
|
+
};
|
|
212
|
+
const previous = session.connection;
|
|
213
|
+
// The session as it was, if this could not take it over.
|
|
214
|
+
const unclaimed = yield* SubscriptionRef.modify(state, (held) => {
|
|
215
|
+
if (held.connection !== previous || !beginsFrom[attempt](held))
|
|
216
|
+
return [held, held];
|
|
217
|
+
const next = {
|
|
218
|
+
...held,
|
|
219
|
+
status: "connecting",
|
|
220
|
+
generation: c.generation,
|
|
221
|
+
connection: c,
|
|
222
|
+
lastError: undefined,
|
|
223
|
+
received: new Set(),
|
|
224
|
+
sampler: Stats.initialSampler,
|
|
225
|
+
};
|
|
226
|
+
return [undefined, next];
|
|
227
|
+
});
|
|
228
|
+
if (unclaimed !== undefined) {
|
|
229
|
+
yield* shutDown(scope, Exit.void);
|
|
230
|
+
if (states !== undefined && unclaimed.reconnecting)
|
|
231
|
+
return { joins: join(joinsOwn(unclaimed), states) };
|
|
232
|
+
// Only the connection changed: what replaced it is ready or down for good.
|
|
233
|
+
if (states !== undefined && beginsFrom.reconnect(unclaimed))
|
|
234
|
+
return { joins: join(joinsAfter(session), states) };
|
|
235
|
+
if (attempt === "own")
|
|
236
|
+
return undefined;
|
|
237
|
+
return yield* refusal(attempt, unclaimed);
|
|
238
|
+
}
|
|
239
|
+
if (began !== undefined)
|
|
240
|
+
yield* Ref.set(began, c.generation);
|
|
241
|
+
// The previous generation is retired whatever happens, and a defect meanwhile fails and
|
|
242
|
+
// closes this one.
|
|
243
|
+
yield* Effect.gen(function* () {
|
|
244
|
+
yield* publish({ _tag: "Status", status: "connecting" });
|
|
245
|
+
yield* Scope.addFinalizer(scope, fail(c, ReactorError.fromCode("Aborted", "connection scope closed", { generation: c.generation })));
|
|
246
|
+
yield* take(c.events).pipe(Effect.flatMap((event) => inbound.apply(c, event)), Effect.forever, Effect.forkIn(scope));
|
|
247
|
+
}).pipe(Effect.ensuring(previous === undefined ? Effect.void : retire(previous)), Effect.onError((cause) => abandon(c, cause)));
|
|
248
|
+
return c;
|
|
249
|
+
});
|
|
250
|
+
/** Moves the session on to waiting, which fails once the session's close has begun. */
|
|
251
|
+
const reachWaiting = Effect.flatMap(transition("waiting"), (moved) => moved ? Effect.void : Effect.fail(closed()));
|
|
252
|
+
/**
|
|
253
|
+
* Moves the session to ready on `c`, in one step with the checks that it may: `c` is the
|
|
254
|
+
* session's connection, waiting, and has not failed. Otherwise this fails as closed once the
|
|
255
|
+
* session's close has begun, and else as `current(c)` does, `c`'s own failure first.
|
|
256
|
+
*/
|
|
257
|
+
const reachReady = Effect.fnUntraced(function* (c) {
|
|
258
|
+
const refused = yield* SubscriptionRef.modify(state, (session) => {
|
|
259
|
+
if (isClosing(session.status))
|
|
260
|
+
return [closed(), session];
|
|
261
|
+
// Read with the move: a drop fails `c` before it moves the session on.
|
|
262
|
+
const failure = Ref.getUnsafe(c.link).failure;
|
|
263
|
+
if (failure !== undefined)
|
|
264
|
+
return [failure, session];
|
|
265
|
+
if (session.connection !== c || session.status !== "waiting")
|
|
266
|
+
return [retired(c), session];
|
|
267
|
+
// A ready connection ends the session's own reconnect.
|
|
268
|
+
return [undefined, { ...session, status: "ready", reconnecting: false }];
|
|
269
|
+
});
|
|
270
|
+
if (refused !== undefined)
|
|
271
|
+
return yield* refused;
|
|
272
|
+
yield* publish({ _tag: "Status", status: "ready" }, c.generation);
|
|
273
|
+
});
|
|
274
|
+
/** Negotiates `c` through to ready, its tracks resumed and its heartbeat running. */
|
|
275
|
+
const negotiate = Effect.fnUntraced(function* (c, reconnect) {
|
|
276
|
+
if (!reconnect)
|
|
277
|
+
yield* guard(c, allocate);
|
|
278
|
+
yield* current(c);
|
|
279
|
+
yield* reachWaiting;
|
|
280
|
+
const known = (yield* SubscriptionRef.get(state)).remote;
|
|
281
|
+
if (!isKnown(known))
|
|
282
|
+
return yield* ReactorError.fromCode("InvalidState", "no known session id");
|
|
283
|
+
yield* Effect.annotateCurrentSpan("reactor.session.id", known.id);
|
|
284
|
+
const descriptor = yield* guard(c, signaling.ready(known.id, reconnect ? undefined : known.descriptor));
|
|
285
|
+
yield* learn({ descriptor });
|
|
286
|
+
yield* phase("described");
|
|
287
|
+
const capabilities = descriptor.capabilities;
|
|
288
|
+
const transport = descriptor.selected_transport;
|
|
289
|
+
if (capabilities === undefined || transport === undefined)
|
|
290
|
+
return yield* ReactorError.fromCode("Protocol", "missing ready capabilities or transport");
|
|
291
|
+
if (transport.protocol !== "webrtc" || transport.version !== "1.0")
|
|
292
|
+
return yield* ReactorError.fromCode("VersionMismatch", `unsupported transport ${transport.protocol}/${transport.version}`);
|
|
293
|
+
const ready = { ...descriptor, capabilities, selected_transport: transport };
|
|
294
|
+
const servers = yield* guard(c, signaling.iceServers(known.id));
|
|
295
|
+
const prepared = yield* guard(c, Scope.provide(c.peer.prepare(servers, capabilities.tracks, (event) => {
|
|
296
|
+
// The host boundary: hosts emit from platform callbacks; the
|
|
297
|
+
// generation's fiber applies the events in order.
|
|
298
|
+
Queue.offerUnsafe(c.events, event);
|
|
299
|
+
}), c.scope));
|
|
300
|
+
yield* Ref.update(c.link, (link) => ({ ...link, mapping: prepared.mapping }));
|
|
301
|
+
yield* phase("prepared");
|
|
302
|
+
const previousId = known.connectionId;
|
|
303
|
+
const connectionId = previousId ?? (yield* guard(c, signaling.register(known.id)));
|
|
304
|
+
yield* Ref.update(c.link, (link) => ({ ...link, connectionId }));
|
|
305
|
+
yield* learn({ connectionId });
|
|
306
|
+
yield* phase("registered");
|
|
307
|
+
// Registration, then buffered ICE (the empty final batch included), then offer, then answer.
|
|
308
|
+
yield* ice.trickle(c);
|
|
309
|
+
yield* guard(c, signaling.offer(known.id, connectionId, prepared.sdp, prepared.mapping, reconnect && previousId !== undefined));
|
|
310
|
+
yield* phase("offered");
|
|
311
|
+
const answer = yield* guard(c, signaling.answer(known.id, connectionId));
|
|
312
|
+
const negotiatedId = answer.connection_id ?? connectionId;
|
|
313
|
+
yield* Ref.update(c.link, (link) => ({ ...link, connectionId: negotiatedId }));
|
|
314
|
+
yield* learn({ connectionId: negotiatedId });
|
|
315
|
+
yield* guard(c, c.peer.answer(answer.sdp_answer));
|
|
316
|
+
yield* phase("answered");
|
|
317
|
+
yield* guard(c, Deferred.await(c.ready)).pipe(Effect.timeoutOrElse({
|
|
318
|
+
duration: settings.readyTimeout,
|
|
319
|
+
orElse: timedOut("peer and both channels ready"),
|
|
320
|
+
}));
|
|
321
|
+
yield* current(c);
|
|
322
|
+
yield* phase("ready");
|
|
323
|
+
yield* Ref.update(c.link, (link) => ({
|
|
324
|
+
...link,
|
|
325
|
+
negotiated: {
|
|
326
|
+
ownership: known.ownership,
|
|
327
|
+
sessionId: known.id,
|
|
328
|
+
descriptor: ready,
|
|
329
|
+
connectionId: negotiatedId,
|
|
330
|
+
},
|
|
331
|
+
}));
|
|
332
|
+
// Hosted Reactor holds a connection's media until that connection
|
|
333
|
+
// resumes its receive-only tracks, attached or not.
|
|
334
|
+
for (const track of capabilities.tracks)
|
|
335
|
+
if (track.direction === "recvonly" && resumeTracks) {
|
|
336
|
+
const resumed = yield* Effect.result(tracks.setTrackActive(track.name, true, c));
|
|
337
|
+
if (resumed._tag === "Failure")
|
|
338
|
+
yield* publish({ _tag: "Diagnostic", error: resumed.failure }, c.generation);
|
|
339
|
+
}
|
|
340
|
+
for (const [name, bitrate] of (yield* SubscriptionRef.get(state)).bitrates) {
|
|
341
|
+
const applied = yield* Effect.result(guard(c, c.peer.maxBitrate(name, bitrate)));
|
|
342
|
+
if (applied._tag === "Failure")
|
|
343
|
+
yield* publish({ _tag: "Diagnostic", error: applied.failure }, c.generation);
|
|
344
|
+
}
|
|
345
|
+
if (Duration.isFinite(settings.heartbeat))
|
|
346
|
+
yield* background(c, requests
|
|
347
|
+
.notification(c, { case: "ping", value: {} })
|
|
348
|
+
.pipe(Effect.repeat(Schedule.spaced(settings.heartbeat)), Effect.asVoid));
|
|
349
|
+
// Last, so a deadline can cut only work before the connection is ready. It readies `c` alone,
|
|
350
|
+
// and only while `c` is up: a drop meanwhile fails the negotiation with that drop.
|
|
351
|
+
yield* reachReady(c);
|
|
352
|
+
});
|
|
353
|
+
/**
|
|
354
|
+
* A connection attempt: a failed one fails with its own failure, and leaves its generation
|
|
355
|
+
* failed and closed. The generation is acquired and released around its negotiation, so an
|
|
356
|
+
* interrupt that comes while it begins lands in the negotiation, and still fails and closes it.
|
|
357
|
+
* The session's own attempt that fails before it has a generation says why, as a failed
|
|
358
|
+
* generation does: no caller hears of it otherwise. Its span begins a trace of its own, linked
|
|
359
|
+
* to the session's `acquisition`, which may have ended hours before, and it keeps the generation
|
|
360
|
+
* it begins in `began`. A reconnect asked for while the session reconnects on its own waits that
|
|
361
|
+
* reconnect out, and ends as it does.
|
|
362
|
+
*/
|
|
363
|
+
const attempt = (kind, acquisition, began) => Effect.acquireUseRelease(kind === "own"
|
|
364
|
+
? begin(kind, began).pipe(Effect.tapError((error) => publish({ _tag: "Diagnostic", error })))
|
|
365
|
+
: begin(kind), (c) => Effect.gen(function* () {
|
|
366
|
+
if (c === undefined)
|
|
367
|
+
return;
|
|
368
|
+
if ("joins" in c)
|
|
369
|
+
return yield* c.joins;
|
|
370
|
+
const reconnect = kind !== "connect";
|
|
371
|
+
yield* Effect.annotateCurrentSpan("reactor.connection.generation", c.generation);
|
|
372
|
+
yield* negotiate(c, reconnect).pipe(Effect.timeoutOrElse({
|
|
373
|
+
duration: reconnect ? settings.reconnectTimeout : settings.connectTimeout,
|
|
374
|
+
orElse: timedOut(reconnect ? "reconnect" : "connect"),
|
|
375
|
+
}));
|
|
376
|
+
}), (c, exit) => c === undefined || "joins" in c || Exit.isSuccess(exit)
|
|
377
|
+
? Effect.void
|
|
378
|
+
: Effect.andThen(allocationUnknown, abandon(c, exit.cause))).pipe(Effect.scoped, Effect.withSpan(kind === "connect" ? "Session.connect" : "Session.reconnect", kind === "own"
|
|
379
|
+
? {
|
|
380
|
+
kind: "client",
|
|
381
|
+
root: true,
|
|
382
|
+
links: acquisition === undefined ? [] : [{ span: acquisition, attributes: {} }],
|
|
383
|
+
}
|
|
384
|
+
: { kind: "client" }, { captureStackTrace: false }));
|
|
385
|
+
/**
|
|
386
|
+
* The session's own reconnect stopped for `error` on `generation`, the latest it began, unless
|
|
387
|
+
* another attempt, another generation or the close took over: the session stays disconnected,
|
|
388
|
+
* and says why, unless it `said` so already.
|
|
389
|
+
*/
|
|
390
|
+
const stop = Effect.fnUntraced(function* (error, said, generation) {
|
|
391
|
+
const news = yield* SubscriptionRef.modify(state, (session) => {
|
|
392
|
+
if (!beginsFrom.own(session) || session.generation !== generation)
|
|
393
|
+
return [false, session];
|
|
394
|
+
const next = { ...session, reconnecting: false, lastError: error };
|
|
395
|
+
return [!said && session.lastError !== error, next];
|
|
396
|
+
});
|
|
397
|
+
if (news)
|
|
398
|
+
yield* publish({ _tag: "Diagnostic", error });
|
|
399
|
+
});
|
|
400
|
+
/**
|
|
401
|
+
* The connection the reconnect made ready on `generation` at `since`, on the monotonic clock,
|
|
402
|
+
* stays up until it has been ready for `settle`, or this fails with why it went down sooner.
|
|
403
|
+
* Once the session is on another generation, one a reconnect asked for began, this reconnect is
|
|
404
|
+
* over, however late this sees it: it ends, and leaves that generation alone.
|
|
405
|
+
*/
|
|
406
|
+
const holds = (generation, since) => Effect.gen(function* () {
|
|
407
|
+
const up = Duration.nanos((yield* Clock.monotonicTimeNanos) - since);
|
|
408
|
+
const left = Duration.subtract(settle, up);
|
|
409
|
+
if (!Duration.isPositive(left))
|
|
410
|
+
return;
|
|
411
|
+
const down = yield* SubscriptionRef.changes(state).pipe(Stream.filter((session) => session.status !== "ready" || session.generation !== generation), Stream.runHead, Effect.timeoutOption(left), Effect.map(Option.flatten));
|
|
412
|
+
if (Option.isNone(down) || down.value.generation !== generation)
|
|
413
|
+
return;
|
|
414
|
+
const why = down.value.lastError ?? ReactorError.fromCode("Disconnected", "connection went down");
|
|
415
|
+
return yield* why;
|
|
416
|
+
});
|
|
417
|
+
/**
|
|
418
|
+
* Reconnects each connection the session drops: an attempt at once, then again on `schedule`,
|
|
419
|
+
* which sees each failure, until a connection has stayed ready for `settle`. A connection that
|
|
420
|
+
* drops sooner fails its attempt, so one that keeps dropping is tried on the schedule, within
|
|
421
|
+
* `reconnectTimeout` of the drop that began the reconnect. It stops once the schedule stops, no
|
|
422
|
+
* attempt can succeed or that time has passed; a connection ready then still has the rest of its
|
|
423
|
+
* `settle`, counted from when it became ready, to stay up, and the reconnect stops where it drops
|
|
424
|
+
* if it does not. Each attempt says why it failed as it fails, and a reconnect out of time stops
|
|
425
|
+
* with a `Timeout` whose detail is the last attempt's failure, or why the connection ready as the
|
|
426
|
+
* time ran out dropped. A reconnect asked for while a connection this made ready settles ends
|
|
427
|
+
* this one, which leaves the generation the application began alone, whether ready, failed or
|
|
428
|
+
* dropped. A defect ends that reconnect, is reported, and the next drop is reconnected again.
|
|
429
|
+
*/
|
|
430
|
+
const reconnectEachDrop = (schedule, acquisition) => Effect.gen(function* () {
|
|
431
|
+
const dropped = yield* SubscriptionRef.changes(state).pipe(Stream.filter(beginsFrom.own), Stream.runHead);
|
|
432
|
+
// The drop's move wakes this inline, before the drop has published its own events: the
|
|
433
|
+
// attempt waits for the scheduler, so its events come after them.
|
|
434
|
+
yield* Effect.yieldNow;
|
|
435
|
+
// The latest generation this reconnect began, the dropped one to begin with. A session on
|
|
436
|
+
// any other is another's: a reconnect asked for as a connection settled began it.
|
|
437
|
+
const began = yield* Ref.make(Option.getOrThrow(dropped).generation);
|
|
438
|
+
// The session is still this reconnect's to try again: down, on the latest generation it
|
|
439
|
+
// began.
|
|
440
|
+
const ours = Effect.map(Effect.all([SubscriptionRef.get(state), Ref.get(began)]), ([session, mine]) => beginsFrom.own(session) && session.generation === mine);
|
|
441
|
+
// Why the last attempt failed, which it published as it did; the deadline's detail.
|
|
442
|
+
const last = yield* Ref.make(undefined);
|
|
443
|
+
// The latest connection this reconnect made ready, and when, on the monotonic clock.
|
|
444
|
+
const readied = yield* Ref.make({
|
|
445
|
+
generation: 0n,
|
|
446
|
+
at: 0n,
|
|
447
|
+
});
|
|
448
|
+
const settles = Effect.gen(function* () {
|
|
449
|
+
const generation = yield* Ref.get(began);
|
|
450
|
+
const at = yield* Clock.monotonicTimeNanos;
|
|
451
|
+
yield* Ref.set(readied, { generation, at });
|
|
452
|
+
return yield* holds(generation, at);
|
|
453
|
+
});
|
|
454
|
+
const reconnected = yield* attempt("own", acquisition, began).pipe(Effect.andThen(settles), Effect.tapError((error) => Ref.set(last, error)), Effect.retry({
|
|
455
|
+
schedule,
|
|
456
|
+
while: (error) => (ends(error) ? Effect.succeed(false) : ours),
|
|
457
|
+
}), Effect.timeoutOrElse({
|
|
458
|
+
duration: settings.reconnectTimeout,
|
|
459
|
+
orElse: () => Effect.flatMap(Ref.get(last), (failure) => Effect.fail(outOfTime(failure))),
|
|
460
|
+
}), Effect.exit);
|
|
461
|
+
if (Exit.isSuccess(reconnected))
|
|
462
|
+
return;
|
|
463
|
+
if (Cause.hasDies(reconnected.cause))
|
|
464
|
+
yield* ErrorReporter.report(reconnected.cause);
|
|
465
|
+
const mine = yield* Ref.get(began);
|
|
466
|
+
const now = yield* SubscriptionRef.get(state);
|
|
467
|
+
// Another's generation: a reconnect asked for as this one's connection settled ended it.
|
|
468
|
+
if (now.generation !== mine)
|
|
469
|
+
return;
|
|
470
|
+
const stopped = failureOr(() => ReactorError.fromCode("Aborted", "reconnecting stopped"));
|
|
471
|
+
if (now.status === "ready") {
|
|
472
|
+
// A connection ready as the time ran out has the rest of its `settle`, counted from when
|
|
473
|
+
// it became ready, to stay up; from now, if the deadline came before this noted when.
|
|
474
|
+
const ready = yield* Ref.get(readied);
|
|
475
|
+
const since = ready.generation === mine ? ready.at : yield* Clock.monotonicTimeNanos;
|
|
476
|
+
const held = yield* Effect.exit(holds(mine, since));
|
|
477
|
+
if (Exit.isSuccess(held))
|
|
478
|
+
return;
|
|
479
|
+
return yield* stop(held.cause.pipe(stopped, outOfTime), false, mine);
|
|
480
|
+
}
|
|
481
|
+
const error = stopped(reconnected.cause);
|
|
482
|
+
// An attempt's own failure was published as it failed.
|
|
483
|
+
yield* stop(error, error === (yield* Ref.get(last)), mine);
|
|
484
|
+
}).pipe(Effect.forever);
|
|
485
|
+
/**
|
|
486
|
+
* Once the acquisition has connected, the session reconnects each connection it drops on its
|
|
487
|
+
* own, one dropped meanwhile included, in a fiber its close interrupts.
|
|
488
|
+
*/
|
|
489
|
+
const arm = Effect.gen(function* () {
|
|
490
|
+
if (settings.reconnect === undefined)
|
|
491
|
+
return;
|
|
492
|
+
yield* SubscriptionRef.update(state, (session) => ({
|
|
493
|
+
...session,
|
|
494
|
+
reconnects: true,
|
|
495
|
+
reconnecting: session.status === "disconnected",
|
|
496
|
+
}));
|
|
497
|
+
const acquisition = Option.getOrUndefined(yield* Effect.option(Effect.currentParentSpan));
|
|
498
|
+
yield* Effect.forkIn(reconnectEachDrop(settings.reconnect, acquisition), root);
|
|
499
|
+
});
|
|
500
|
+
return { allocate, connect: attempt("connect"), reconnect: attempt("reconnect"), arm };
|
|
501
|
+
};
|
|
502
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/internal/session/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live connection generation: the checks that fence work to it, and its
|
|
3
|
+
* one failure, which fails its requests, closes its peer and, while it is
|
|
4
|
+
* live, leaves the session disconnected, reconnecting if it does so on its own.
|
|
5
|
+
*/
|
|
6
|
+
import * as Cause from "effect/Cause";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Exit from "effect/Exit";
|
|
9
|
+
import * as Stream from "effect/Stream";
|
|
10
|
+
import { ReactorError } from "../../ReactorError.js";
|
|
11
|
+
import type { Connection, Core } from "./model.js";
|
|
12
|
+
/** Why work fenced to `c` stops once another generation, or the close, has taken `c`'s place. */
|
|
13
|
+
export declare const retired: (c: Connection) => ReactorError;
|
|
14
|
+
export declare const make: (core: Core) => {
|
|
15
|
+
current: (c: Connection) => Effect.Effect<undefined, ReactorError, never>;
|
|
16
|
+
currentReady: Effect.Effect<{
|
|
17
|
+
c: Connection;
|
|
18
|
+
negotiated: {
|
|
19
|
+
readonly ownership: "owned" | "attached";
|
|
20
|
+
readonly sessionId: string;
|
|
21
|
+
readonly descriptor: import("../../Session.js").ReadyDescriptor;
|
|
22
|
+
readonly connectionId: number;
|
|
23
|
+
};
|
|
24
|
+
}, ReactorError, never>;
|
|
25
|
+
guard: <A>(c: Connection, effect: Effect.Effect<A, ReactorError>) => Effect.Effect<A, ReactorError, never>;
|
|
26
|
+
reportHost: (cause: Cause.Cause<unknown>, generation?: bigint | undefined) => Effect.Effect<void, never, never>;
|
|
27
|
+
failUnreported: (c: Connection, error: ReactorError) => Effect.Effect<Exit.Exit<void, never>, never, never>;
|
|
28
|
+
fail: (c: Connection, error: ReactorError) => Effect.Effect<void, never, never>;
|
|
29
|
+
background: (c: Connection, body: Effect.Effect<void, ReactorError>) => Effect.Effect<void, never, never>;
|
|
30
|
+
readyGate: (c: Connection) => Effect.Effect<void, never, never>;
|
|
31
|
+
fenced: <A>(c: Connection, source: Stream.Stream<A, ReactorError>) => Stream.Stream<A, ReactorError>;
|
|
32
|
+
failedConnection: (c: Connection) => Effect.Effect<ReactorError>;
|
|
33
|
+
};
|
|
34
|
+
export type Generation = ReturnType<typeof make>;
|
|
35
|
+
//# sourceMappingURL=generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../../src/internal/session/generation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAGpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAa,YAAY,EAAmB,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAe,MAAM,YAAY,CAAC;AAmChE,iGAAiG;AACjG,eAAO,MAAM,OAAO,MAAO,UAAU,iBAC4D,CAAC;AAElG,eAAO,MAAM,IAAI,SAAU,IAAI;;;;;;;;;;;YAgCd,CAAC,KAAK,UAAU,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC;;;cA2FtD,UAAU,SAAS,YAAY;oBASzB,UAAU,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;mBASpD,UAAU;aAWhB,CAAC,KACZ,UAAU,UACL,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC;0BAiBJ,UAAU,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;CA6BtE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC"}
|