reactor-effect-browser 0.2.0 → 0.3.0-rc.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/README.md CHANGED
@@ -14,15 +14,20 @@ npm install reactor-effect-client reactor-effect-browser effect@4.0.0-rc.115
14
14
 
15
15
  ## Usage
16
16
 
17
- `Browser.make(configuration)` constructs the canonical factory with the browser peer selected; `Browser.layer` supplies the `PeerFactory` for `Reactor.layer()`. Constructing a factory makes no allocation. Effect HTTP and crypto services remain explicit.
17
+ `Browser.layer` supplies the `PeerFactory` for `Reactor.layer()`. Constructing a factory makes no allocation. Effect HTTP and crypto services remain explicit.
18
18
 
19
19
  ```ts
20
- import { Effect } from "effect";
20
+ import { Effect, Layer } from "effect";
21
+ import * as Reactor from "reactor-effect-client";
21
22
  import * as Browser from "reactor-effect-browser";
22
23
 
24
+ const clientLayer = Reactor.layer({ apiUrl: "https://api.reactor.inc" }).pipe(
25
+ Layer.provide(Layer.mergeAll(Reactor.FetchHttp.layer, Browser.layer)),
26
+ );
27
+
23
28
  const useTrack = Effect.scoped(
24
29
  Effect.gen(function* () {
25
- const client = yield* Browser.make({ apiUrl: "https://api.reactor.inc" });
30
+ const client = yield* Reactor.Client;
26
31
  const session = yield* client.createConnected({ model: "your-model" });
27
32
  const media = yield* Browser.media(session);
28
33
  return yield* media.track("main_video");
@@ -30,11 +35,13 @@ const useTrack = Effect.scoped(
30
35
  );
31
36
  ```
32
37
 
38
+ The application also provides Effect's `Crypto` service, backed by Web Crypto.
39
+
33
40
  `Browser.media(session)` obtains the negotiated generation; `media.track(name)` acquires a scoped `MediaStreamTrack`, and `media.publish(name, track)` publishes through that generation. Media values stay bound to the generation that negotiated them. A reconnect creates a new generation; existing readers end or fail with their source, and applications obtain the new generation explicitly.
34
41
 
35
- The entry point also exports `videoFrames`, `audioSamples`, `webAudioSamples`, `audioContext`, `play`, `nextPresentation` and the `Recording` namespace, whose `downloadClip` transfers a prepared recording within a caller wall deadline.
42
+ The entry point also exports `videoFrames`, `audioSamples`, `webAudioSamples`, `audioContext`, `play`, `nextPresentation` and the `Recording` namespace, whose `downloadClip(coordinator, clip, options)` transfers a prepared recording within a caller wall deadline through the portable `Coordinator.Client` from `Coordinator.make()`; it is the same operation as `coordinator.downloadClip(clip, options)`.
36
43
 
37
- If the host lacks `RTCPeerConnection`, `Browser.make` fails with `UnsupportedHost` before any coordinator request is made.
44
+ If the host lacks `RTCPeerConnection` or `MediaStream`, building `Browser.layer` fails with `UnsupportedHost`, before any coordinator request can be made.
38
45
 
39
46
  ## Development
40
47
 
@@ -1 +1 @@
1
- {"version":3,"file":"audio-packet.d.ts","sourceRoot":"","sources":["../../src/_internal/audio-packet.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC;AACD,eAAO,MAAM,iBAAiB,UAAW,OAAO,YAAY,MAAM,KAAG,cAwCpE,CAAC"}
1
+ {"version":3,"file":"audio-packet.d.ts","sourceRoot":"","sources":["../../src/_internal/audio-packet.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC;AACD,eAAO,MAAM,iBAAiB,UAAW,OAAO,YAAY,MAAM,KAAG,cAyCpE,CAAC"}
@@ -3,7 +3,7 @@ import { record, finite } from "reactor-effect-client/host";
3
3
  export const decodeAudioPacket = (input, maxBytes) => {
4
4
  const p = record(input, "AudioWorklet packet");
5
5
  if (p.type !== "pcm")
6
- throw new ReactorError("Protocol", "unexpected AudioWorklet packet");
6
+ throw ReactorError.fromCode("Protocol", "unexpected AudioWorklet packet");
7
7
  const frames = finite(p.frames, "PCM frames");
8
8
  const sampleRate = finite(p.sampleRate, "sample rate");
9
9
  if (!Number.isSafeInteger(frames) ||
@@ -12,21 +12,21 @@ export const decodeAudioPacket = (input, maxBytes) => {
12
12
  !Number.isSafeInteger(sampleRate) ||
13
13
  sampleRate < 1 ||
14
14
  sampleRate > 384_000) {
15
- throw new ReactorError("Protocol", "invalid PCM frame count or sample rate");
15
+ throw ReactorError.fromCode("Protocol", "invalid PCM frame count or sample rate");
16
16
  }
17
17
  const frame = finite(p.frame, "context frame"), skipped = finite(p.skipped, "skipped frames");
18
18
  if (!Number.isSafeInteger(frame) || frame < 0 || !Number.isSafeInteger(skipped) || skipped < 0)
19
- throw new ReactorError("Protocol", "invalid render-clock frame counter");
19
+ throw ReactorError.fromCode("Protocol", "invalid render-clock frame counter");
20
20
  if (!Array.isArray(p.planes) || p.planes.length < 1 || p.planes.length > 32)
21
- throw new ReactorError("Protocol", "invalid PCM channel count");
21
+ throw ReactorError.fromCode("Protocol", "invalid PCM channel count");
22
22
  if (p.planes.length * frames * 4 > maxBytes)
23
- throw new ReactorError("Overflow", "PCM sample byte bound exceeded");
23
+ throw ReactorError.fromCode("Overflow", "PCM sample byte bound exceeded");
24
24
  const planes = p.planes.map((plane) => {
25
25
  if (!(plane instanceof ArrayBuffer) || plane.byteLength !== frames * 4)
26
- throw new ReactorError("Protocol", "PCM plane length/type mismatch");
26
+ throw ReactorError.fromCode("Protocol", "PCM plane length/type mismatch");
27
27
  const data = new Float32Array(plane);
28
28
  if (!data.every(Number.isFinite))
29
- throw new ReactorError("Protocol", "nonfinite PCM sample");
29
+ throw ReactorError.fromCode("Protocol", "nonfinite PCM sample");
30
30
  return data;
31
31
  });
32
32
  return Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"audio-packet.js","sourceRoot":"","sources":["../../src/_internal/audio-packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAY5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAkB,EAAE;IACpF,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;QAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACvD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC7B,MAAM,GAAG,CAAC;QACV,MAAM,GAAG,MAAM;QACf,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;QACjC,UAAU,GAAG,CAAC;QACd,UAAU,GAAG,OAAO,EACpB,CAAC;QACD,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,wCAAwC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,EAC5C,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC5F,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,oCAAoC,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;QACzE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,QAAQ;QACzC,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,GAAG,CAAC;YACpE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM;QACN,UAAU;QACV,WAAW,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,UAAU;QAC7C,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,sBAAsB;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"audio-packet.js","sourceRoot":"","sources":["../../src/_internal/audio-packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAY5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAkB,EAAE;IACpF,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;QAAE,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACvD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC7B,MAAM,GAAG,CAAC;QACV,MAAM,GAAG,MAAM;QACf,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;QACjC,UAAU,GAAG,CAAC;QACd,UAAU,GAAG,OAAO,EACpB,CAAC;QACD,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,wCAAwC,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,EAC5C,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC5F,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,oCAAoC,CAAC,CAAC;IAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;QACzE,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,QAAQ;QACzC,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,GAAG,CAAC;YACpE,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC9B,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM;QACN,UAAU;QACV,WAAW,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,UAAU;QAC7C,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,OAAO;QACtB,KAAK,EAAE,sBAAsB;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import * as Duration from "effect/Duration";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Scope from "effect/Scope";
3
4
  import type * as Stream from "effect/Stream";
@@ -6,20 +7,39 @@ import type { WebAudioSample } from "./audio-packet.js";
6
7
  export type { WebAudioSample } from "./audio-packet.js";
7
8
  /** Call from an ordinary start click. No autoplay-policy workaround is attempted.
8
9
  * The scope owns this context; audio streams borrow it and own their nodes/track clones. */
9
- export declare const audioContext: (options?: {
10
+ export interface AudioContextOptions {
10
11
  readonly sampleRate?: number;
11
- readonly timeoutMs?: number;
12
- }) => Effect.Effect<AudioContext, ReactorError, Scope.Scope>;
12
+ /**
13
+ * How long resuming the context, and closing it on release, may each take; 5
14
+ * seconds by default and at most 1 minute. A bare number is milliseconds.
15
+ */
16
+ readonly transitionTimeout?: Duration.Input | undefined;
17
+ /** @deprecated Removed in 0.3.0: use `transitionTimeout` (a bare number is milliseconds). */
18
+ readonly timeoutMs?: never;
19
+ }
20
+ export declare const audioContext: (options?: AudioContextOptions) => Effect.Effect<AudioContext, ReactorError, Scope.Scope>;
13
21
  export interface WebAudioOptions {
14
22
  /** A running built-in context; caller or audioContext() scope retains ownership. */
15
23
  readonly context: AudioContext;
16
24
  /** Serve dist/browser/_internal/pcm-worklet.js locally. A bundler must preserve/copy this asset. */
17
25
  readonly workletUrl?: string | URL;
18
26
  readonly maxSampleBytes?: number;
19
- /** Each consumption owns a muted HTMLAudioElement and waits for its ordinary play().
20
- * This deadline is separate from worklet registration and individual PCM reads. */
21
- readonly activationTimeoutMs?: number;
22
- readonly readTimeoutMs?: number;
27
+ /**
28
+ * Each consumption owns a muted HTMLAudioElement and waits for its ordinary
29
+ * play(). This deadline is separate from worklet registration and individual
30
+ * PCM reads; 5 seconds by default and at most 1 minute. A bare number is
31
+ * milliseconds.
32
+ */
33
+ readonly activationTimeout?: Duration.Input | undefined;
34
+ /**
35
+ * How long registering the worklet, and then each PCM read, may take; 10
36
+ * seconds by default and at most 10 minutes. A bare number is milliseconds.
37
+ */
38
+ readonly readTimeout?: Duration.Input | undefined;
39
+ /** @deprecated Removed in 0.3.0: use `activationTimeout` (a bare number is milliseconds). */
40
+ readonly activationTimeoutMs?: never;
41
+ /** @deprecated Removed in 0.3.0: use `readTimeout` (a bare number is milliseconds). */
42
+ readonly readTimeoutMs?: never;
23
43
  }
24
44
  /** Window-realm PCM with OWNED muted playback activation, not a bare Web Audio tap.
25
45
  * Each consumption clones the borrowed source once, attaches that clone to an owned muted
@@ -1 +1 @@
1
- {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/_internal/audio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyBxD;4FAC4F;AAC5F,eAAO,MAAM,YAAY,aACd;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,KACrE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAgDpD,CAAC;AACL,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,oGAAoG;IACpG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;uFACmF;IACnF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAkBD;;;;;;;;uFAQuF;AACvF,eAAO,MAAM,eAAe,WAClB,gBAAgB,WACf,eAAe,KACvB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CA+LzC,CAAC"}
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/_internal/audio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AASrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyBxD;4FAC4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IACxD,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;CAC5B;AACD,eAAO,MAAM,YAAY,aACd,mBAAmB,KAC3B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAsDpD,CAAC;AACL,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,oGAAoG;IACpG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IAClD,6FAA6F;IAC7F,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;CAChC;AAkBD;;;;;;;;uFAQuF;AACvF,eAAO,MAAM,eAAe,WAClB,gBAAgB,WACf,eAAe,KACvB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAyMzC,CAAC"}
@@ -1,7 +1,8 @@
1
+ import * as Duration from "effect/Duration";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Scope from "effect/Scope";
3
4
  import { ReactorError } from "reactor-effect-client";
4
- import { errorOf, fromOwnedReadableStream, positiveLimit } from "reactor-effect-client/host";
5
+ import { duration, errorOf, fromOwnedReadableStream, parsed, positiveLimit, } from "reactor-effect-client/host";
5
6
  import { decodeAudioPacket } from "./audio-packet.js";
6
7
  const bounded = async (work, timeout, label, signal) => {
7
8
  let timer;
@@ -10,8 +11,8 @@ const bounded = async (work, timeout, label, signal) => {
10
11
  return await Promise.race([
11
12
  work,
12
13
  new Promise((_, reject) => {
13
- timer = setTimeout(() => reject(new ReactorError("Timeout", label)), timeout);
14
- rejectAbort = () => reject(new ReactorError("Aborted", label));
14
+ timer = setTimeout(() => reject(ReactorError.fromCode("Timeout", label)), timeout);
15
+ rejectAbort = () => reject(ReactorError.fromCode("Aborted", label));
15
16
  if (signal?.aborted)
16
17
  rejectAbort();
17
18
  else
@@ -26,32 +27,32 @@ const bounded = async (work, timeout, label, signal) => {
26
27
  signal?.removeEventListener("abort", rejectAbort);
27
28
  }
28
29
  };
29
- /** Call from an ordinary start click. No autoplay-policy workaround is attempted.
30
- * The scope owns this context; audio streams borrow it and own their nodes/track clones. */
31
30
  export const audioContext = (options = {}) => Effect.gen(function* () {
32
- const timeout = yield* Effect.try({
33
- try: () => positiveLimit(options.timeoutMs ?? 5000, "audio context timeout", 60000),
34
- catch: errorOf,
35
- });
31
+ const timeout = yield* parsed(() => duration(options.transitionTimeout ?? "5 seconds", "audio context transition timeout", {
32
+ maximum: "1 minute",
33
+ }));
36
34
  const context = yield* Effect.acquireRelease(Effect.try({
37
35
  try: () => {
38
36
  if (typeof AudioContext !== "function" || typeof AudioWorkletNode !== "function")
39
- throw new ReactorError("UnsupportedCapability", "built-in AudioContext and AudioWorkletNode are required");
37
+ throw ReactorError.fromCode("UnsupportedCapability", "built-in AudioContext and AudioWorkletNode are required");
40
38
  return new AudioContext(options.sampleRate === undefined ? {} : { sampleRate: options.sampleRate });
41
39
  },
42
40
  catch: (e) => errorOf(e, "UnsupportedCapability"),
43
- }), (context) => Effect.tryPromise({
44
- try: () => bounded(context.close(), timeout, "AudioContext close deadline"),
45
- catch: errorOf,
46
- }).pipe(Effect.ignore));
41
+ }),
42
+ // Neither browser promise can be cancelled; each deadline only stops waiting for it.
43
+ (context) => Effect.tryPromise({
44
+ try: () => context.close(),
45
+ catch: (cause) => errorOf(cause, "Shutdown", "AudioContext.close"),
46
+ }).pipe(Effect.timeout(timeout), Effect.ignore));
47
47
  yield* Effect.tryPromise({
48
- try: (signal) => bounded(context.resume(), timeout, "AudioContext resume deadline; supply user activation", signal),
49
- catch: (cause) => cause instanceof ReactorError
50
- ? cause
51
- : new ReactorError("UnsupportedCapability", "AudioContext resume failed; ordinary user activation is required", { detail: cause }),
52
- });
48
+ try: () => context.resume(),
49
+ catch: (cause) => ReactorError.fromCode("UnsupportedCapability", "AudioContext resume failed; ordinary user activation is required", { detail: cause }),
50
+ }).pipe(Effect.timeoutOrElse({
51
+ duration: timeout,
52
+ orElse: () => Effect.fail(ReactorError.fromCode("Timeout", "AudioContext resume deadline; supply user activation")),
53
+ }));
53
54
  if (context.state !== "running")
54
- return yield* Effect.fail(new ReactorError("UnsupportedCapability", `AudioContext is ${context.state}, not running`));
55
+ return yield* ReactorError.fromCode("UnsupportedCapability", `AudioContext is ${context.state}, not running`);
55
56
  return context;
56
57
  });
57
58
  // A worklet is registered once per context and URL. Failed registration is retryable, not cached success.
@@ -83,23 +84,30 @@ const load = (context, url) => {
83
84
  * No ScriptProcessorNode, getUserMedia, device permission or native engine is used. */
84
85
  export const webAudioSamples = (source, options) => fromOwnedReadableStream({
85
86
  evaluate: () => {
86
- const timeout = positiveLimit(options.readTimeoutMs ?? 10000, "PCM read timeout", 600000);
87
- const activationTimeout = positiveLimit(options.activationTimeoutMs ?? 5000, "PCM activation timeout", 60000);
87
+ // The deadlines race host promises inside the stream's callbacks, in milliseconds.
88
+ const timeout = Duration.toMillis(duration(options.readTimeout ?? "10 seconds", "PCM read timeout", {
89
+ maximum: "10 minutes",
90
+ }));
91
+ const activationTimeout = Duration.toMillis(duration(options.activationTimeout ?? "5 seconds", "PCM activation timeout", {
92
+ maximum: "1 minute",
93
+ }));
88
94
  const maxBytes = positiveLimit(options.maxSampleBytes ?? 1048576, "PCM sample bound", 64 * 1024 * 1024);
89
95
  const context = options.context;
90
96
  if (source.kind !== "audio" || source.readyState !== "live")
91
- throw new ReactorError("InvalidState", "expected a live audio track");
97
+ throw ReactorError.fromCode("InvalidState", "expected a live audio track");
92
98
  if (typeof AudioWorkletNode !== "function" || context.audioWorklet === undefined)
93
- throw new ReactorError("UnsupportedCapability", "built-in AudioWorklet is unavailable in this realm");
99
+ throw ReactorError.fromCode("UnsupportedCapability", "built-in AudioWorklet is unavailable in this realm");
94
100
  if (typeof document === "undefined" ||
101
+ // Feature detection reads the method itself, not its deprecated overload.
102
+ // oxlint-disable-next-line typescript/no-deprecated
95
103
  typeof document.createElement !== "function" ||
96
104
  typeof MediaStream !== "function")
97
- throw new ReactorError("UnsupportedCapability", "PCM activation requires a Window document and built-in HTML audio playback");
105
+ throw ReactorError.fromCode("UnsupportedCapability", "PCM activation requires a Window document and built-in HTML audio playback");
98
106
  if (context.state !== "running")
99
- throw new ReactorError("UnsupportedCapability", "PCM requires an explicitly resumed, running AudioContext");
107
+ throw ReactorError.fromCode("UnsupportedCapability", "PCM requires an explicitly resumed, running AudioContext");
100
108
  const url = new URL(options.workletUrl ?? new URL("./pcm-worklet.js", import.meta.url), import.meta.url);
101
109
  if (!/^(https?:|file:)$/.test(url.protocol))
102
- throw new ReactorError("Protocol", "serve the PCM worklet as a normal local module, not a data/blob URL");
110
+ throw ReactorError.fromCode("Protocol", "serve the PCM worklet as a normal local module, not a data/blob URL");
103
111
  const track = source.clone(), lifetime = new AbortController();
104
112
  let input, node;
105
113
  let sink, watch;
@@ -122,7 +130,7 @@ export const webAudioSamples = (source, options) => fromOwnedReadableStream({
122
130
  sink.pause();
123
131
  sink.srcObject = null;
124
132
  }
125
- pending?.reject(new ReactorError("Aborted", "PCM reader closed"));
133
+ pending?.reject(ReactorError.fromCode("Aborted", "PCM reader closed"));
126
134
  pending = undefined;
127
135
  input?.disconnect();
128
136
  if (node !== undefined) {
@@ -141,10 +149,10 @@ export const webAudioSamples = (source, options) => fromOwnedReadableStream({
141
149
  close();
142
150
  }
143
151
  };
144
- const ended = () => fail(new ReactorError("Disconnected", "PCM track ended"));
152
+ const ended = () => fail(ReactorError.fromCode("Disconnected", "PCM track ended"));
145
153
  const state = () => {
146
154
  if (context.state !== "running")
147
- fail(new ReactorError("Disconnected", `PCM context ${context.state}`));
155
+ fail(ReactorError.fromCode("Disconnected", `PCM context ${context.state}`));
148
156
  };
149
157
  const live = () => {
150
158
  if (source.readyState !== "live" || track.readyState !== "live")
@@ -190,17 +198,17 @@ export const webAudioSamples = (source, options) => fromOwnedReadableStream({
190
198
  return;
191
199
  try {
192
200
  if (pending === undefined)
193
- throw new ReactorError("Protocol", "unsolicited PCM block without a read credit");
201
+ throw ReactorError.fromCode("Protocol", "unsolicited PCM block without a read credit");
194
202
  const sample = decodeAudioPacket(event.data, maxBytes), waiter = pending;
195
203
  pending = undefined;
196
204
  waiter.resolve(sample);
197
205
  }
198
206
  catch (error) {
199
- fail(errorOf(error));
207
+ fail(errorOf(error, "Protocol", "PCM block"));
200
208
  }
201
209
  };
202
- node.port.onmessageerror = () => fail(new ReactorError("Protocol", "PCM transfer could not be deserialized"));
203
- node.onprocessorerror = () => fail(new ReactorError("UnsupportedCapability", "PCM AudioWorklet processor failed"));
210
+ node.port.onmessageerror = () => fail(ReactorError.fromCode("Protocol", "PCM transfer could not be deserialized"));
211
+ node.onprocessorerror = () => fail(ReactorError.fromCode("UnsupportedCapability", "PCM AudioWorklet processor failed"));
204
212
  input.connect(node);
205
213
  node.connect(context.destination);
206
214
  };
@@ -223,7 +231,7 @@ export const webAudioSamples = (source, options) => fromOwnedReadableStream({
223
231
  c.enqueue(sample);
224
232
  }
225
233
  catch (error) {
226
- fail(errorOf(error));
234
+ fail(errorOf(error, "Protocol", "PCM read"));
227
235
  }
228
236
  },
229
237
  cancel: close,
@@ -1 +1 @@
1
- {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/_internal/audio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/_internal/audio.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,19 @@
1
1
  export { audioContext, webAudioSamples } from "./audio.js";
2
- export type { WebAudioOptions, WebAudioSample } from "./audio.js";
2
+ export type { AudioContextOptions, WebAudioOptions, WebAudioSample } from "./audio.js";
3
+ import * as Duration from "effect/Duration";
3
4
  import * as Effect from "effect/Effect";
4
5
  import * as Stream from "effect/Stream";
5
6
  import type * as Scope from "effect/Scope";
6
7
  import { ReactorError } from "reactor-effect-client";
7
8
  export interface MediaOptions {
8
9
  readonly maxSampleBytes?: number;
9
- readonly readTimeoutMs?: number;
10
+ /**
11
+ * How long reading and copying each sample may take; 10 seconds by default
12
+ * and at most 10 minutes. A bare number is milliseconds.
13
+ */
14
+ readonly readTimeout?: Duration.Input | undefined;
15
+ /** @deprecated Removed in 0.3.0: use `readTimeout` (a bare number is milliseconds). */
16
+ readonly readTimeoutMs?: never;
10
17
  }
11
18
  export interface VideoSample {
12
19
  readonly format: "RGBA";
@@ -54,7 +61,14 @@ export declare const videoFrames: (track: MediaStreamTrack, options?: MediaOptio
54
61
  /** Optional native AudioData in the current realm. No worker or Web Audio fallback. */
55
62
  export declare const audioSamples: (track: MediaStreamTrack, options?: MediaOptions) => Stream.Stream<AudioSample, ReactorError>;
56
63
  /** Scoped local playback. Starting playback does not establish audience output. */
57
- export declare const play: (track: MediaStreamTrack, element: HTMLMediaElement, timeoutMs?: number) => Effect.Effect<void, ReactorError, Scope.Scope>;
64
+ export interface PlayOptions {
65
+ /**
66
+ * How long starting playback may take; 10 seconds by default and at most 10
67
+ * minutes. A bare number is milliseconds.
68
+ */
69
+ readonly playTimeout?: Duration.Input | undefined;
70
+ }
71
+ export declare const play: (track: MediaStreamTrack, element: HTMLMediaElement, options?: PlayOptions) => Effect.Effect<void, ReactorError, Scope.Scope>;
58
72
  export interface Presentation {
59
73
  readonly callbackTimeMs: number;
60
74
  readonly mediaTimeSeconds: number;
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/_internal/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/_internal/media.ts"],"names":[],"mappings":"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"}