reactor-effect-client 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -1099
- 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 -246
- package/dist/orchestration/scheduler-policy.d.ts.map +0 -1
- package/dist/orchestration/scheduler-policy.js +0 -668
- package/dist/orchestration/scheduler-policy.js.map +0 -1
- package/dist/orchestration/scheduler.d.ts +0 -393
- package/dist/orchestration/scheduler.d.ts.map +0 -1
- package/dist/orchestration/scheduler.js +0 -2621
- 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
package/dist/media-stream.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import * as Effect from "effect/Effect";
|
|
2
|
-
import * as Stream from "effect/Stream";
|
|
3
|
-
const cancelBound = "1 second";
|
|
4
|
-
/** Catch acquisition failures in the typed channel and own both cancel AND releaseLock.
|
|
5
|
-
* In pinned Effect, fromReadableStream's default finalizer cancels without releasing;
|
|
6
|
-
* releaseLockOnEnd instead releases without cancellation. Media needs both operations. */
|
|
7
|
-
export const fromOwnedReadableStream = (options) => Stream.unwrap(Effect.gen(function* () {
|
|
8
|
-
const reader = yield* Effect.acquireRelease(Effect.try({ try: () => options.evaluate().getReader(), catch: options.onError }),
|
|
9
|
-
// A host whose cancel never settles must not hold the finalizer, which
|
|
10
|
-
// can sit ahead of paid-session termination: wait at most a second,
|
|
11
|
-
// then release the lock whatever the cancel did. A rejected cancel is
|
|
12
|
-
// fine; the underlying media finalizer still runs on stream error.
|
|
13
|
-
(reader) => Effect.tryPromise(() => reader.cancel()).pipe(Effect.timeout(cancelBound), Effect.ignore, Effect.ensuring(Effect.sync(() => {
|
|
14
|
-
reader.releaseLock();
|
|
15
|
-
}))));
|
|
16
|
-
return Stream.unfold(undefined, () => Effect.tryPromise({ try: () => reader.read(), catch: options.onError }).pipe(Effect.map((next) => (next.done ? undefined : [next.value, undefined]))));
|
|
17
|
-
}));
|
|
18
|
-
//# sourceMappingURL=media-stream.js.map
|
package/dist/media-stream.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-stream.js","sourceRoot":"","sources":["../src/media-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B;;0FAE0F;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAI,OAG1C,EAAkC,EAAE,CACnC,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CACzC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACjF,uEAAuE;IACvE,oEAAoE;IACpE,sEAAsE;IACtE,mEAAmE;IACnE,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC,CACH,CACF,CACJ,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CACnC,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAW,CAAC,CAAC,CACnF,CACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
|
package/dist/observation.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as Cause from "effect/Cause";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import type * as Scope from "effect/Scope";
|
|
4
|
-
import * as Stream from "effect/Stream";
|
|
5
|
-
import { ReactorError } from "./errors.js";
|
|
6
|
-
export interface ObservationOptions {
|
|
7
|
-
readonly capacity?: number;
|
|
8
|
-
readonly maxBytes?: number;
|
|
9
|
-
}
|
|
10
|
-
/** Slow observation never blocks protocol correlation or silently drops lifecycle events. */
|
|
11
|
-
export declare class Observations<A> {
|
|
12
|
-
private readonly maxSubscribers;
|
|
13
|
-
private readonly subscribers;
|
|
14
|
-
private closed;
|
|
15
|
-
private failure;
|
|
16
|
-
overflowCount: bigint;
|
|
17
|
-
constructor(maxSubscribers?: number);
|
|
18
|
-
get size(): number;
|
|
19
|
-
/** Acquire before reading a snapshot, then ignore queued revisions covered by that snapshot. */
|
|
20
|
-
subscribe(options?: ObservationOptions): Effect.Effect<Stream.Stream<A, ReactorError>, ReactorError, Scope.Scope>;
|
|
21
|
-
/**
|
|
22
|
-
* A state and every value emitted after it, with no gap: the subscription is
|
|
23
|
-
* acquired before `state` is read, so a value emitted in between is queued
|
|
24
|
-
* rather than lost (and may repeat what the state already reflects).
|
|
25
|
-
*/
|
|
26
|
-
observeWith<S, E>(state: Effect.Effect<S, E>, options?: ObservationOptions): Effect.Effect<{
|
|
27
|
-
readonly initial: S;
|
|
28
|
-
readonly events: Stream.Stream<A, ReactorError>;
|
|
29
|
-
}, ReactorError | E, Scope.Scope>;
|
|
30
|
-
stream(options?: ObservationOptions): Stream.Stream<A, ReactorError>;
|
|
31
|
-
emit(value: A, bytes?: number): void;
|
|
32
|
-
end(): void;
|
|
33
|
-
/** Source failure belongs to each reader, including a later subscription. */
|
|
34
|
-
fail(error: ReactorError): void;
|
|
35
|
-
/** Owned worker defects must reach observers without becoming recoverable errors. */
|
|
36
|
-
failCause(cause: Cause.Cause<ReactorError>): void;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=observation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAyB,YAAY,EAAE,MAAM,aAAa,CAAC;AAYlE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,6FAA6F;AAC7F,qBAAa,YAAY,CAAC,CAAC;IAMb,OAAO,CAAC,QAAQ,CAAC,cAAc;IAL3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,aAAa,SAAM;IAEnB,YAA6B,cAAc,SAAK,EAE/C;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,gGAAgG;IAChG,SAAS,CACP,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAgE1E;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,CAAC,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAAC,MAAM,CACd;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;KAAE,EACxE,YAAY,GAAG,CAAC,EAChB,KAAK,CAAC,KAAK,CACZ,CAIA;IAED,MAAM,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAEnE;IAED,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,SAAM,GAAG,IAAI,CAoBhC;IAED,GAAG,IAAI,IAAI,CAKV;IAED,6EAA6E;IAC7E,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE9B;IAED,qFAAqF;IACrF,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAMhD;CACF"}
|
package/dist/observation.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import * as Cause from "effect/Cause";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Queue from "effect/Queue";
|
|
4
|
-
import * as Stream from "effect/Stream";
|
|
5
|
-
import { take as takeQueue } from "./_internal/queue.js";
|
|
6
|
-
import { parsed, positiveLimit, ReactorError } from "./errors.js";
|
|
7
|
-
/** Slow observation never blocks protocol correlation or silently drops lifecycle events. */
|
|
8
|
-
export class Observations {
|
|
9
|
-
maxSubscribers;
|
|
10
|
-
subscribers = new Set();
|
|
11
|
-
closed = false;
|
|
12
|
-
failure;
|
|
13
|
-
overflowCount = 0n;
|
|
14
|
-
constructor(maxSubscribers = 64) {
|
|
15
|
-
this.maxSubscribers = maxSubscribers;
|
|
16
|
-
positiveLimit(maxSubscribers, "observer count", 4096);
|
|
17
|
-
}
|
|
18
|
-
get size() {
|
|
19
|
-
return this.subscribers.size;
|
|
20
|
-
}
|
|
21
|
-
/** Acquire before reading a snapshot, then ignore queued revisions covered by that snapshot. */
|
|
22
|
-
subscribe(options = {}) {
|
|
23
|
-
const observations = this;
|
|
24
|
-
return Effect.gen(function* () {
|
|
25
|
-
const bounds = yield* parsed(() => ({
|
|
26
|
-
capacity: positiveLimit(options.capacity ?? 64, "observation capacity", 4096),
|
|
27
|
-
maxBytes: positiveLimit(options.maxBytes ?? 1_048_576, "observation bytes", 64 * 1024 * 1024),
|
|
28
|
-
}));
|
|
29
|
-
const subscriber = yield* Effect.acquireRelease(Effect.gen(function* () {
|
|
30
|
-
if (observations.subscribers.size >= observations.maxSubscribers) {
|
|
31
|
-
return yield* ReactorError.fromCode("Overflow", "observer count bound reached", {
|
|
32
|
-
outcome: "not-submitted",
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
const queue = yield* Queue.dropping(bounds.capacity);
|
|
36
|
-
const subscriber = { queue, maxBytes: bounds.maxBytes, bufferedBytes: 0 };
|
|
37
|
-
if (observations.failure !== undefined)
|
|
38
|
-
Queue.failCauseUnsafe(queue, observations.failure);
|
|
39
|
-
else if (observations.closed)
|
|
40
|
-
Queue.endUnsafe(queue);
|
|
41
|
-
else
|
|
42
|
-
observations.subscribers.add(subscriber);
|
|
43
|
-
return subscriber;
|
|
44
|
-
}), (subscriber) => Effect.gen(function* () {
|
|
45
|
-
observations.subscribers.delete(subscriber);
|
|
46
|
-
subscriber.bufferedBytes = 0;
|
|
47
|
-
yield* Queue.shutdown(subscriber.queue);
|
|
48
|
-
}));
|
|
49
|
-
let reading = false;
|
|
50
|
-
return Stream.unwrap(Effect.gen(function* () {
|
|
51
|
-
yield* Effect.acquireRelease(parsed(() => {
|
|
52
|
-
if (reading)
|
|
53
|
-
throw ReactorError.fromCode("AlreadyReading", "this observation already has an active reader");
|
|
54
|
-
reading = true;
|
|
55
|
-
}), () => Effect.sync(() => {
|
|
56
|
-
reading = false;
|
|
57
|
-
}));
|
|
58
|
-
return Stream.fromEffectRepeat(Effect.uninterruptibleMask((restore) => restore(takeQueue(subscriber.queue)).pipe(Effect.map((entry) => {
|
|
59
|
-
subscriber.bufferedBytes -= entry.bytes;
|
|
60
|
-
return entry.value;
|
|
61
|
-
}))));
|
|
62
|
-
}));
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* A state and every value emitted after it, with no gap: the subscription is
|
|
67
|
-
* acquired before `state` is read, so a value emitted in between is queued
|
|
68
|
-
* rather than lost (and may repeat what the state already reflects).
|
|
69
|
-
*/
|
|
70
|
-
observeWith(state, options) {
|
|
71
|
-
return Effect.flatMap(this.subscribe(options), (events) => Effect.map(state, (initial) => ({ initial, events })));
|
|
72
|
-
}
|
|
73
|
-
stream(options) {
|
|
74
|
-
return Stream.unwrap(this.subscribe(options));
|
|
75
|
-
}
|
|
76
|
-
emit(value, bytes = 256) {
|
|
77
|
-
if (this.closed)
|
|
78
|
-
return;
|
|
79
|
-
for (const subscriber of this.subscribers) {
|
|
80
|
-
if (bytes > subscriber.maxBytes - subscriber.bufferedBytes ||
|
|
81
|
-
!Queue.offerUnsafe(subscriber.queue, { value, bytes })) {
|
|
82
|
-
this.overflowCount++;
|
|
83
|
-
Queue.failCauseUnsafe(subscriber.queue, Cause.fail(ReactorError.fromCode("Overflow", "observation bound exceeded; acquire a new observation and snapshot")));
|
|
84
|
-
this.subscribers.delete(subscriber);
|
|
85
|
-
}
|
|
86
|
-
else
|
|
87
|
-
subscriber.bufferedBytes += bytes;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
end() {
|
|
91
|
-
if (this.closed)
|
|
92
|
-
return;
|
|
93
|
-
this.closed = true;
|
|
94
|
-
for (const subscriber of this.subscribers)
|
|
95
|
-
Queue.endUnsafe(subscriber.queue);
|
|
96
|
-
this.subscribers.clear();
|
|
97
|
-
}
|
|
98
|
-
/** Source failure belongs to each reader, including a later subscription. */
|
|
99
|
-
fail(error) {
|
|
100
|
-
this.failCause(Cause.fail(error));
|
|
101
|
-
}
|
|
102
|
-
/** Owned worker defects must reach observers without becoming recoverable errors. */
|
|
103
|
-
failCause(cause) {
|
|
104
|
-
if (this.closed)
|
|
105
|
-
return;
|
|
106
|
-
this.failure = cause;
|
|
107
|
-
this.closed = true;
|
|
108
|
-
for (const subscriber of this.subscribers)
|
|
109
|
-
Queue.failCauseUnsafe(subscriber.queue, cause);
|
|
110
|
-
this.subscribers.clear();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=observation.js.map
|
package/dist/observation.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observation.js","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type * as Clock from "effect/Clock";
|
|
2
|
-
/**
|
|
3
|
-
* The clock's monotonic time in whole milliseconds. Elapsed time, such as a
|
|
4
|
-
* source's age or a build's length, is measured on it, so a correction of the
|
|
5
|
-
* host's wall clock moves no deadline and bends no measurement. Its origin is
|
|
6
|
-
* arbitrary: a reading is only ever compared with another reading.
|
|
7
|
-
*/
|
|
8
|
-
export declare const monotonicMillis: (clock: Clock.Clock) => number;
|
|
9
|
-
//# sourceMappingURL=elapsed.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elapsed.d.ts","sourceRoot":"","sources":["../../src/orchestration/elapsed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UAAW,KAAK,CAAC,KAAK,KAAG,MACE,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The clock's monotonic time in whole milliseconds. Elapsed time, such as a
|
|
3
|
-
* source's age or a build's length, is measured on it, so a correction of the
|
|
4
|
-
* host's wall clock moves no deadline and bends no measurement. Its origin is
|
|
5
|
-
* arbitrary: a reading is only ever compared with another reading.
|
|
6
|
-
*/
|
|
7
|
-
export const monotonicMillis = (clock) => Number(clock.monotonicTimeNanosUnsafe() / 1000000n);
|
|
8
|
-
//# sourceMappingURL=elapsed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elapsed.js","sourceRoot":"","sources":["../../src/orchestration/elapsed.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAU,EAAE,CAC5D,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,QAAU,CAAC,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import * as Effect from "effect/Effect";
|
|
2
|
-
import type * as FileSystem from "effect/FileSystem";
|
|
3
|
-
import type * as Path from "effect/Path";
|
|
4
|
-
import * as Scope from "effect/Scope";
|
|
5
|
-
import type * as Crypto from "effect/Crypto";
|
|
6
|
-
import type * as Http from "effect/unstable/http/HttpClient";
|
|
7
|
-
import { CommandFailure, ReactorError } from "../errors.js";
|
|
8
|
-
import type { Options as ProviderOptions, Provider } from "../h3/types.js";
|
|
9
|
-
import type { Session } from "../session/index.js";
|
|
10
|
-
import type { MediaGeneration } from "../session/media.js";
|
|
11
|
-
import { PolicyFailure } from "./request.js";
|
|
12
|
-
import type { Canvas } from "./request.js";
|
|
13
|
-
import type { LoadLimits } from "./references.js";
|
|
14
|
-
import type { ClipRecord, LocalClipRecord, Source } from "./types.js";
|
|
15
|
-
export interface H3SourceOptions {
|
|
16
|
-
readonly media: Effect.Effect<MediaGeneration, ReactorError>;
|
|
17
|
-
/** Explicit broadcast policy; absent settings leave the provider unchanged. */
|
|
18
|
-
readonly canvas?: Canvas;
|
|
19
|
-
readonly holdLastFrame?: boolean;
|
|
20
|
-
readonly resetOnClose?: boolean;
|
|
21
|
-
readonly references?: Partial<LoadLimits>;
|
|
22
|
-
readonly maxAnnotations?: number;
|
|
23
|
-
}
|
|
24
|
-
/** Broadcast policy and limits for a session-bound H3 source. */
|
|
25
|
-
export interface SessionSourceOptions extends Omit<H3SourceOptions, "media"> {
|
|
26
|
-
/** Acquisition and observation options for the session's H3 provider view. */
|
|
27
|
-
readonly provider?: ProviderOptions | undefined;
|
|
28
|
-
}
|
|
29
|
-
/** A physical source whose H3 provider view is exposed for the operations the source does not project. */
|
|
30
|
-
export interface H3Source extends Source {
|
|
31
|
-
readonly provider: Provider;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* The session-bound constructor over a media accessor. The accessor is a
|
|
35
|
-
* parameter only so tests can bind the media of a fake session; the public
|
|
36
|
-
* constructor binds the session's own decoded-media generation.
|
|
37
|
-
*/
|
|
38
|
-
export declare const bindSession: (media: (session: Session) => Effect.Effect<MediaGeneration, ReactorError>) => (session: Session, options?: SessionSourceOptions) => Effect.Effect<H3Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
|
|
39
|
-
/**
|
|
40
|
-
* A physical H3 source for one connected session, with its provider view and
|
|
41
|
-
* its decoded media both derived from that session, so a source can never pair
|
|
42
|
-
* one session's commands with another session's media. It needs a host with
|
|
43
|
-
* decoded media (the native host); on a host without it, or before the session
|
|
44
|
-
* is connected, it fails before any provider observation or policy command.
|
|
45
|
-
* Closing the source closes the session.
|
|
46
|
-
*/
|
|
47
|
-
export declare const fromH3Session: (session: Session, options?: SessionSourceOptions) => Effect.Effect<H3Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
|
|
48
|
-
/**
|
|
49
|
-
* Bind explicit broadcast policy and host reference loading to an H3 view.
|
|
50
|
-
* Acquisition, provider facts, dispatch evidence, and media remain with their
|
|
51
|
-
* existing owners; this source only annotates and projects them. Internal:
|
|
52
|
-
* the public constructor is `fromH3Session`, which derives both views from
|
|
53
|
-
* one session.
|
|
54
|
-
*/
|
|
55
|
-
export declare const fromH3: (session: Session, provider: Provider, options: H3SourceOptions) => Effect.Effect<Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
|
|
56
|
-
/** A consumer can narrow its optional annotation without assuming ownership. */
|
|
57
|
-
export declare const isLocalClip: (value: ClipRecord) => value is LocalClipRecord;
|
|
58
|
-
//# sourceMappingURL=h3-source.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"h3-source.d.ts","sourceRoot":"","sources":["../../src/orchestration/h3-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
import * as Clock from "effect/Clock";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Exit from "effect/Exit";
|
|
4
|
-
import * as Option from "effect/Option";
|
|
5
|
-
import * as Result from "effect/Result";
|
|
6
|
-
import * as Scope from "effect/Scope";
|
|
7
|
-
import * as Semaphore from "effect/Semaphore";
|
|
8
|
-
import * as Stream from "effect/Stream";
|
|
9
|
-
import { CommandFailure, ReactorError } from "../errors.js";
|
|
10
|
-
import { make as makeProvider } from "../h3/_internal/client.js";
|
|
11
|
-
import { audioReferenceLimits, h3ReferenceTurboRealtime } from "../h3/profile.js";
|
|
12
|
-
import { Observations } from "../observation.js";
|
|
13
|
-
import { mediaGeneration } from "../session/_internal/acquire.js";
|
|
14
|
-
import * as Submission from "../Submission.js";
|
|
15
|
-
import { PolicyFailure, captureRequest, preworkFailure } from "./request.js";
|
|
16
|
-
import { monotonicMillis } from "./elapsed.js";
|
|
17
|
-
import { emptyState, isIdle } from "./queries.js";
|
|
18
|
-
import { loadReferenceBytes } from "./references.js";
|
|
19
|
-
import { metadataForH3 } from "./scheduler-key.js";
|
|
20
|
-
const record = (clip, annotations, sessionId) => {
|
|
21
|
-
const annotation = annotations.get(clip.clip_id);
|
|
22
|
-
return Object.freeze({
|
|
23
|
-
clipId: clip.clip_id,
|
|
24
|
-
sessionId,
|
|
25
|
-
durationSeconds: clip.seconds,
|
|
26
|
-
provider: clip,
|
|
27
|
-
...(annotation === undefined
|
|
28
|
-
? {}
|
|
29
|
-
: { request: annotation.request, seq: annotation.seq, enqueuedAt: annotation.enqueuedAt }),
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
/** This projection owns no provider queue or playback state. */
|
|
33
|
-
const project = (snapshot, annotations, times, sessionId) => {
|
|
34
|
-
const facts = snapshot._tag === "Ready" ? snapshot : snapshot.lastFacts;
|
|
35
|
-
const known = new Map(snapshot.clips.map((entry) => [entry.clip.clip_id, entry.clip]));
|
|
36
|
-
const playingId = facts?.state.playing_clip_id ?? null;
|
|
37
|
-
const playingClip = playingId === null ? undefined : known.get(playingId);
|
|
38
|
-
const playingTime = playingId === null ? undefined : times.get(playingId)?.startedAt;
|
|
39
|
-
const playingMono = playingId === null ? undefined : times.get(playingId)?.startedAtMonotonicMillis;
|
|
40
|
-
const aspect = facts?.state.aspect;
|
|
41
|
-
const canvas = aspect === "16:9" || aspect === "1:1" || aspect === "9:16" || aspect === "4:3"
|
|
42
|
-
? Option.some(aspect)
|
|
43
|
-
: Option.none();
|
|
44
|
-
const continuable = snapshot.clips
|
|
45
|
-
.filter((entry) => entry.clip.ready && entry.lifecycle !== "clip_failed")
|
|
46
|
-
.sort((left, right) => left.source.sequence < right.source.sequence
|
|
47
|
-
? -1
|
|
48
|
-
: left.source.sequence > right.source.sequence
|
|
49
|
-
? 1
|
|
50
|
-
: 0)
|
|
51
|
-
.slice(-h3ReferenceTurboRealtime.continuationWindow)
|
|
52
|
-
.map((entry) => entry.clip.clip_id);
|
|
53
|
-
return Object.freeze({
|
|
54
|
-
...emptyState(),
|
|
55
|
-
availability: snapshot._tag,
|
|
56
|
-
sessions: [{ sessionId, availability: snapshot._tag }],
|
|
57
|
-
preferredSessionId: Option.some(sessionId),
|
|
58
|
-
queued: Object.freeze((facts?.queue.generation ?? []).map((clip) => record(clip, annotations, sessionId))),
|
|
59
|
-
generationOrder: Object.freeze((facts?.queue.generation ?? []).map((clip) => clip.clip_id)),
|
|
60
|
-
// H3 does not report a build start. Queue-head estimates remain estimates in
|
|
61
|
-
// an application's horizon calculation, never observed Building records.
|
|
62
|
-
building: Option.none(),
|
|
63
|
-
ready: Object.freeze((facts?.queue.playout ?? []).map((clip) => record(clip, annotations, sessionId))),
|
|
64
|
-
playing: playingId === null
|
|
65
|
-
? Option.none()
|
|
66
|
-
: Option.some({
|
|
67
|
-
clipId: playingId,
|
|
68
|
-
record: playingClip === undefined
|
|
69
|
-
? Option.none()
|
|
70
|
-
: Option.some(record(playingClip, annotations, sessionId)),
|
|
71
|
-
startedAt: playingTime === undefined ? Option.none() : Option.some(playingTime),
|
|
72
|
-
...(playingMono === undefined ? {} : { startedAtMonotonicMillis: playingMono }),
|
|
73
|
-
}),
|
|
74
|
-
continuable: Object.freeze(continuable),
|
|
75
|
-
failed: Object.freeze(snapshot.clips
|
|
76
|
-
.filter((entry) => entry.lifecycle === "clip_failed")
|
|
77
|
-
.map((entry) => entry.clip.clip_id)),
|
|
78
|
-
started: (facts?.state.clips_played ?? 0) > 0 || facts?.state.playing === true,
|
|
79
|
-
canvas,
|
|
80
|
-
capacities: facts === null
|
|
81
|
-
? emptyState().capacities
|
|
82
|
-
: {
|
|
83
|
-
generation: facts.state.generation_capacity,
|
|
84
|
-
playout: facts.state.playout_capacity,
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* The session-bound constructor over a media accessor. The accessor is a
|
|
90
|
-
* parameter only so tests can bind the media of a fake session; the public
|
|
91
|
-
* constructor binds the session's own decoded-media generation.
|
|
92
|
-
*/
|
|
93
|
-
export const bindSession = (media) => (session, options = {}) => Effect.gen(function* () {
|
|
94
|
-
// The host capability and the ready connection are checked before any
|
|
95
|
-
// provider observation or policy command.
|
|
96
|
-
yield* media(session);
|
|
97
|
-
const child = yield* Scope.fork(yield* Effect.scope);
|
|
98
|
-
const { provider: providerOptions, ...policy } = options;
|
|
99
|
-
return yield* Effect.gen(function* () {
|
|
100
|
-
const provider = yield* makeProvider(session, providerOptions);
|
|
101
|
-
const source = yield* fromH3(session, provider, { ...policy, media: media(session) });
|
|
102
|
-
return Object.freeze({ ...source, provider });
|
|
103
|
-
}).pipe(Scope.provide(child), Effect.onExit((exit) => (Exit.isFailure(exit) ? Scope.close(child, exit) : Effect.void)));
|
|
104
|
-
});
|
|
105
|
-
/**
|
|
106
|
-
* A physical H3 source for one connected session, with its provider view and
|
|
107
|
-
* its decoded media both derived from that session, so a source can never pair
|
|
108
|
-
* one session's commands with another session's media. It needs a host with
|
|
109
|
-
* decoded media (the native host); on a host without it, or before the session
|
|
110
|
-
* is connected, it fails before any provider observation or policy command.
|
|
111
|
-
* Closing the source closes the session.
|
|
112
|
-
*/
|
|
113
|
-
export const fromH3Session = bindSession(mediaGeneration);
|
|
114
|
-
/**
|
|
115
|
-
* Bind explicit broadcast policy and host reference loading to an H3 view.
|
|
116
|
-
* Acquisition, provider facts, dispatch evidence, and media remain with their
|
|
117
|
-
* existing owners; this source only annotates and projects them. Internal:
|
|
118
|
-
* the public constructor is `fromH3Session`, which derives both views from
|
|
119
|
-
* one session.
|
|
120
|
-
*/
|
|
121
|
-
export const fromH3 = (session, provider, options) => Effect.gen(function* () {
|
|
122
|
-
if (session.id !== provider.sessionId)
|
|
123
|
-
return yield* ReactorError.fromCode("InvalidInput", "H3 provider and session identities differ");
|
|
124
|
-
const environment = yield* Effect.context();
|
|
125
|
-
const clock = yield* Clock.Clock;
|
|
126
|
-
const annotations = new Map();
|
|
127
|
-
const times = new Map();
|
|
128
|
-
const observations = new Observations();
|
|
129
|
-
const limit = options.maxAnnotations ?? 2048;
|
|
130
|
-
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 16384)
|
|
131
|
-
return yield* ReactorError.fromCode("InvalidInput", "Invalid annotation bound");
|
|
132
|
-
let reservations = 0;
|
|
133
|
-
let sequence = 0;
|
|
134
|
-
let closed = false;
|
|
135
|
-
let report;
|
|
136
|
-
let starvationArmed = false;
|
|
137
|
-
const closeGate = yield* Semaphore.make(1);
|
|
138
|
-
const state = provider.current.pipe(Effect.map((snapshot) => project(snapshot, annotations, times, session.id)));
|
|
139
|
-
const emit = (event) => observations.emit(event, 256);
|
|
140
|
-
const receive = (event) => Effect.gen(function* () {
|
|
141
|
-
if (closed)
|
|
142
|
-
return;
|
|
143
|
-
if (event._tag === "Diagnostic") {
|
|
144
|
-
observations.fail(event.error);
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
if (event._tag !== "Message" ||
|
|
148
|
-
event.disposition !== "applied" ||
|
|
149
|
-
event.message.type === "unknown")
|
|
150
|
-
return;
|
|
151
|
-
const message = event.message;
|
|
152
|
-
const at = clock.currentTimeMillisUnsafe();
|
|
153
|
-
if ("clip" in message.data) {
|
|
154
|
-
const clip = message.data.clip;
|
|
155
|
-
const clipId = clip.clip_id;
|
|
156
|
-
const previous = times.get(clipId) ?? {};
|
|
157
|
-
if (!times.has(clipId) && times.size >= limit * 2) {
|
|
158
|
-
observations.fail(ReactorError.fromCode("Overflow", "Orchestration timing observation bound exceeded"));
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
switch (message.type) {
|
|
162
|
-
case "clip_queued":
|
|
163
|
-
emit({ _tag: "Queued", clipId, durationSeconds: clip.seconds });
|
|
164
|
-
break;
|
|
165
|
-
case "clip_generated": {
|
|
166
|
-
times.set(clipId, { ...previous, generatedAt: previous.generatedAt ?? at });
|
|
167
|
-
const annotation = annotations.get(clipId);
|
|
168
|
-
emit({
|
|
169
|
-
_tag: "Ready",
|
|
170
|
-
clipId,
|
|
171
|
-
durationSeconds: clip.seconds,
|
|
172
|
-
timing: annotation === undefined
|
|
173
|
-
? { _tag: "Unknown" }
|
|
174
|
-
: {
|
|
175
|
-
_tag: "Bounded",
|
|
176
|
-
admissionToReadyMs: Math.max(0, monotonicMillis(clock) - annotation.admittedAt),
|
|
177
|
-
},
|
|
178
|
-
});
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
case "clip_started":
|
|
182
|
-
const startedAtMonotonicMillis = previous.startedAtMonotonicMillis ?? monotonicMillis(clock);
|
|
183
|
-
times.set(clipId, {
|
|
184
|
-
...previous,
|
|
185
|
-
startedAt: previous.startedAt ?? at,
|
|
186
|
-
startedAtMonotonicMillis,
|
|
187
|
-
});
|
|
188
|
-
starvationArmed = false;
|
|
189
|
-
emit({
|
|
190
|
-
_tag: "Started",
|
|
191
|
-
clipId,
|
|
192
|
-
durationSeconds: clip.seconds,
|
|
193
|
-
at,
|
|
194
|
-
atMonotonicMillis: startedAtMonotonicMillis,
|
|
195
|
-
});
|
|
196
|
-
break;
|
|
197
|
-
case "clip_finished":
|
|
198
|
-
case "clip_stopped":
|
|
199
|
-
starvationArmed = message.type === "clip_finished";
|
|
200
|
-
emit({
|
|
201
|
-
_tag: "Ended",
|
|
202
|
-
clipId,
|
|
203
|
-
termination: message.type === "clip_finished" ? "finished" : "stopped",
|
|
204
|
-
at,
|
|
205
|
-
atMonotonicMillis: monotonicMillis(clock),
|
|
206
|
-
});
|
|
207
|
-
break;
|
|
208
|
-
case "clip_failed":
|
|
209
|
-
emit({ _tag: "Failed", clipId, reason: message.data.reason });
|
|
210
|
-
break;
|
|
211
|
-
default:
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
if (starvationArmed &&
|
|
216
|
-
(message.type === "state_update" || message.type === "queue_update")) {
|
|
217
|
-
const snapshot = yield* provider.current;
|
|
218
|
-
if (snapshot._tag === "Ready" &&
|
|
219
|
-
snapshot.state.autoplay &&
|
|
220
|
-
!snapshot.state.playing &&
|
|
221
|
-
snapshot.queue.playout.length === 0) {
|
|
222
|
-
starvationArmed = false;
|
|
223
|
-
emit({ _tag: "Starved", at });
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
const observation = yield* provider.observe();
|
|
228
|
-
yield* observation.events.pipe(Stream.runForEach(receive), Effect.catch((error) => Effect.sync(() => observations.fail(error))), Effect.forkScoped);
|
|
229
|
-
const requireReady = (operation) => Effect.gen(function* () {
|
|
230
|
-
if (closed)
|
|
231
|
-
return yield* PolicyFailure.refuse("SessionClosed", "Source is closed", operation);
|
|
232
|
-
let snapshot = yield* provider.current;
|
|
233
|
-
if (snapshot._tag === "Synchronizing") {
|
|
234
|
-
yield* provider.refresh;
|
|
235
|
-
snapshot = yield* provider.current;
|
|
236
|
-
}
|
|
237
|
-
if (snapshot._tag !== "Ready")
|
|
238
|
-
return yield* PolicyFailure.refuse("SessionRecovering", "Provider state is unavailable", operation);
|
|
239
|
-
return snapshot;
|
|
240
|
-
});
|
|
241
|
-
const prepareRouted = (plan, hooks = {}) => Effect.gen(function* () {
|
|
242
|
-
const request = yield* captureRequest(plan.request);
|
|
243
|
-
let annotation;
|
|
244
|
-
const input = Effect.gen(function* () {
|
|
245
|
-
yield* requireReady("enqueue");
|
|
246
|
-
const load = (uri, maxBytes) => loadReferenceBytes(uri, {
|
|
247
|
-
maxBytes: options.references?.maxBytes ?? maxBytes,
|
|
248
|
-
loadTimeout: options.references?.loadTimeout ?? "5 seconds",
|
|
249
|
-
}).pipe(Effect.provideContext(environment), Effect.map((bytes) => ({ _tag: "Bytes", bytes })));
|
|
250
|
-
const references = yield* Effect.forEach(request.references, ({ uri }) => load(uri, h3ReferenceTurboRealtime.references.maxBytes));
|
|
251
|
-
const audio = yield* Effect.forEach(request.audio ?? [], ({ uri }) => load(uri, audioReferenceLimits.maxBytes));
|
|
252
|
-
return {
|
|
253
|
-
prompt: request.prompt,
|
|
254
|
-
references,
|
|
255
|
-
...(audio.length === 0 ? {} : { audio }),
|
|
256
|
-
seconds: request.durationSeconds,
|
|
257
|
-
metadata: metadataForH3(request),
|
|
258
|
-
...(request.seed === undefined ? {} : { seed: request.seed }),
|
|
259
|
-
...(request.continueFrom === undefined ? {} : { continueFrom: request.continueFrom }),
|
|
260
|
-
...(plan.position === undefined ? {} : { position: plan.position }),
|
|
261
|
-
};
|
|
262
|
-
});
|
|
263
|
-
const prepared = yield* provider
|
|
264
|
-
.prepareFrom(input, {
|
|
265
|
-
commit: (id) => Effect.gen(function* () {
|
|
266
|
-
if (annotations.size + reservations >= limit)
|
|
267
|
-
return yield* PolicyFailure.refuse("AnnotationCapacity", "Local submission annotations are full");
|
|
268
|
-
if (sequence >= Number.MAX_SAFE_INTEGER)
|
|
269
|
-
return yield* PolicyFailure.refuse("IdentityExhausted", "Local submission sequence is exhausted");
|
|
270
|
-
reservations++;
|
|
271
|
-
yield* (hooks.commit?.(id) ?? Effect.void).pipe(Effect.onExit((exit) => Exit.isFailure(exit)
|
|
272
|
-
? Effect.sync(() => {
|
|
273
|
-
reservations--;
|
|
274
|
-
})
|
|
275
|
-
: Effect.void));
|
|
276
|
-
annotation = Object.freeze({
|
|
277
|
-
request,
|
|
278
|
-
seq: ++sequence,
|
|
279
|
-
enqueuedAt: clock.currentTimeMillisUnsafe(),
|
|
280
|
-
admittedAt: monotonicMillis(clock),
|
|
281
|
-
});
|
|
282
|
-
}),
|
|
283
|
-
result: (id, result) => Effect.gen(function* () {
|
|
284
|
-
if (annotation === undefined)
|
|
285
|
-
return yield* Effect.die(new Error("H3 result has no committed application annotation"));
|
|
286
|
-
reservations--;
|
|
287
|
-
if (Result.isSuccess(result))
|
|
288
|
-
annotations.set(result.success.clip.clip_id, annotation);
|
|
289
|
-
if (hooks.result !== undefined)
|
|
290
|
-
yield* hooks.result(id, Result.isSuccess(result)
|
|
291
|
-
? Result.succeed(result.success.clip.clip_id)
|
|
292
|
-
: Result.fail(result.failure));
|
|
293
|
-
}),
|
|
294
|
-
})
|
|
295
|
-
.pipe(Effect.mapError((cause) => preworkFailure("enqueue", cause)));
|
|
296
|
-
return Submission.map(prepared, (acceptance) => acceptance.clip.clip_id);
|
|
297
|
-
});
|
|
298
|
-
const close = closeGate.withPermit(Effect.uninterruptible(Effect.gen(function* () {
|
|
299
|
-
if (report !== undefined)
|
|
300
|
-
return report;
|
|
301
|
-
const policy = [];
|
|
302
|
-
if (session.ownership === "owned" && options.resetOnClose === true) {
|
|
303
|
-
const result = yield* Effect.result(provider.reset.pipe(Effect.asVoid));
|
|
304
|
-
policy.push(Object.freeze({ operation: "reset", result }));
|
|
305
|
-
}
|
|
306
|
-
closed = true;
|
|
307
|
-
const lease = yield* session.close;
|
|
308
|
-
observations.end();
|
|
309
|
-
report = Object.freeze({ lease, policy: Object.freeze(policy) });
|
|
310
|
-
return report;
|
|
311
|
-
})));
|
|
312
|
-
yield* Effect.addFinalizer(() => close);
|
|
313
|
-
if (options.canvas !== undefined) {
|
|
314
|
-
if (!isIdle(yield* state))
|
|
315
|
-
return yield* PolicyFailure.refuse("Busy", "Canvas can only change while the provider is idle", "set_canvas");
|
|
316
|
-
yield* provider.setCanvas(options.canvas);
|
|
317
|
-
yield* provider.refresh;
|
|
318
|
-
}
|
|
319
|
-
if (options.holdLastFrame !== undefined) {
|
|
320
|
-
yield* provider.setFlushOnClipEnd(!options.holdLastFrame);
|
|
321
|
-
yield* provider.refresh;
|
|
322
|
-
}
|
|
323
|
-
const media = options.media.pipe(Effect.map((generation) => ({
|
|
324
|
-
generation: generation.generation,
|
|
325
|
-
video: generation.video(h3ReferenceTurboRealtime.tracks.video),
|
|
326
|
-
audio: generation.audio(h3ReferenceTurboRealtime.tracks.audio),
|
|
327
|
-
pressure: generation.snapshot,
|
|
328
|
-
videoFramesPerSecond: h3ReferenceTurboRealtime.fps,
|
|
329
|
-
})));
|
|
330
|
-
return {
|
|
331
|
-
id: session.id,
|
|
332
|
-
state,
|
|
333
|
-
events: observations.stream(),
|
|
334
|
-
observe: (options) => observations.observeWith(state, options),
|
|
335
|
-
prepareRouted,
|
|
336
|
-
media,
|
|
337
|
-
reconnect: session.reconnect.pipe(Effect.andThen(provider.refresh)),
|
|
338
|
-
refresh: provider.refresh,
|
|
339
|
-
setAutoplay: (enabled) => provider.setAutoplay(enabled).pipe(Effect.asVoid),
|
|
340
|
-
stop: provider.stop.pipe(Effect.asVoid),
|
|
341
|
-
remove: (id) => Effect.gen(function* () {
|
|
342
|
-
const snapshot = yield* requireReady("pop");
|
|
343
|
-
const queued = snapshot.queue.generation.some((clip) => clip.clip_id === id);
|
|
344
|
-
const ready = snapshot.queue.playout.some((clip) => clip.clip_id === id);
|
|
345
|
-
if (!queued && !ready)
|
|
346
|
-
return yield* PolicyFailure.refuse("NotFound", "Clip is not present in a provider queue", "pop");
|
|
347
|
-
yield* provider.pop(id);
|
|
348
|
-
return ready ? "ready" : "generation";
|
|
349
|
-
}),
|
|
350
|
-
move: (id, position) => provider.move(id, position).pipe(Effect.asVoid),
|
|
351
|
-
setCanvas: (canvas) => Effect.gen(function* () {
|
|
352
|
-
yield* requireReady("set_canvas");
|
|
353
|
-
if (!isIdle(yield* state))
|
|
354
|
-
return yield* PolicyFailure.refuse("Busy", "Canvas can only change while the provider is idle", "set_canvas");
|
|
355
|
-
yield* provider.setCanvas(canvas);
|
|
356
|
-
}),
|
|
357
|
-
close,
|
|
358
|
-
};
|
|
359
|
-
});
|
|
360
|
-
/** A consumer can narrow its optional annotation without assuming ownership. */
|
|
361
|
-
export const isLocalClip = (value) => value.request !== undefined && value.seq !== undefined && value.enqueuedAt !== undefined;
|
|
362
|
-
//# sourceMappingURL=h3-source.js.map
|