@effect/platform-browser 4.0.0-beta.70 → 4.0.0-beta.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/BrowserCrypto.d.ts +59 -1
  2. package/dist/BrowserCrypto.d.ts.map +1 -1
  3. package/dist/BrowserCrypto.js +59 -1
  4. package/dist/BrowserCrypto.js.map +1 -1
  5. package/dist/BrowserHttpClient.d.ts +8 -0
  6. package/dist/BrowserHttpClient.d.ts.map +1 -1
  7. package/dist/BrowserHttpClient.js +8 -0
  8. package/dist/BrowserHttpClient.js.map +1 -1
  9. package/dist/BrowserKeyValueStore.d.ts +20 -0
  10. package/dist/BrowserKeyValueStore.d.ts.map +1 -1
  11. package/dist/BrowserKeyValueStore.js +70 -15
  12. package/dist/BrowserKeyValueStore.js.map +1 -1
  13. package/dist/BrowserPersistence.d.ts +19 -0
  14. package/dist/BrowserPersistence.d.ts.map +1 -1
  15. package/dist/BrowserPersistence.js +19 -0
  16. package/dist/BrowserPersistence.js.map +1 -1
  17. package/dist/BrowserRuntime.d.ts +48 -0
  18. package/dist/BrowserRuntime.d.ts.map +1 -1
  19. package/dist/BrowserRuntime.js +16 -0
  20. package/dist/BrowserRuntime.js.map +1 -1
  21. package/dist/BrowserSocket.d.ts +55 -22
  22. package/dist/BrowserSocket.d.ts.map +1 -1
  23. package/dist/BrowserSocket.js +55 -22
  24. package/dist/BrowserSocket.js.map +1 -1
  25. package/dist/BrowserStream.d.ts +36 -21
  26. package/dist/BrowserStream.d.ts.map +1 -1
  27. package/dist/BrowserStream.js +36 -21
  28. package/dist/BrowserStream.js.map +1 -1
  29. package/dist/BrowserWorker.d.ts +17 -0
  30. package/dist/BrowserWorker.d.ts.map +1 -1
  31. package/dist/BrowserWorker.js +50 -18
  32. package/dist/BrowserWorker.js.map +1 -1
  33. package/dist/BrowserWorkerRunner.d.ts +19 -0
  34. package/dist/BrowserWorkerRunner.d.ts.map +1 -1
  35. package/dist/BrowserWorkerRunner.js +45 -14
  36. package/dist/BrowserWorkerRunner.js.map +1 -1
  37. package/dist/Clipboard.d.ts +52 -15
  38. package/dist/Clipboard.d.ts.map +1 -1
  39. package/dist/Clipboard.js +37 -13
  40. package/dist/Clipboard.js.map +1 -1
  41. package/dist/Geolocation.d.ts +58 -15
  42. package/dist/Geolocation.d.ts.map +1 -1
  43. package/dist/Geolocation.js +38 -15
  44. package/dist/Geolocation.js.map +1 -1
  45. package/dist/IndexedDb.d.ts +12 -0
  46. package/dist/IndexedDb.d.ts.map +1 -1
  47. package/dist/IndexedDb.js +12 -0
  48. package/dist/IndexedDb.js.map +1 -1
  49. package/dist/IndexedDbDatabase.d.ts +19 -0
  50. package/dist/IndexedDbDatabase.d.ts.map +1 -1
  51. package/dist/IndexedDbDatabase.js +19 -0
  52. package/dist/IndexedDbDatabase.js.map +1 -1
  53. package/dist/IndexedDbQueryBuilder.d.ts +8 -0
  54. package/dist/IndexedDbQueryBuilder.d.ts.map +1 -1
  55. package/dist/IndexedDbQueryBuilder.js +8 -0
  56. package/dist/IndexedDbQueryBuilder.js.map +1 -1
  57. package/dist/IndexedDbTable.d.ts +55 -17
  58. package/dist/IndexedDbTable.d.ts.map +1 -1
  59. package/dist/IndexedDbTable.js +55 -17
  60. package/dist/IndexedDbTable.js.map +1 -1
  61. package/dist/IndexedDbVersion.d.ts +14 -0
  62. package/dist/IndexedDbVersion.d.ts.map +1 -1
  63. package/dist/IndexedDbVersion.js +14 -0
  64. package/dist/IndexedDbVersion.js.map +1 -1
  65. package/dist/Permissions.d.ts +47 -17
  66. package/dist/Permissions.d.ts.map +1 -1
  67. package/dist/Permissions.js +47 -17
  68. package/dist/Permissions.js.map +1 -1
  69. package/dist/index.d.ts +0 -319
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +0 -319
  72. package/dist/index.js.map +1 -1
  73. package/package.json +3 -3
  74. package/src/BrowserCrypto.ts +59 -1
  75. package/src/BrowserHttpClient.ts +8 -0
  76. package/src/BrowserKeyValueStore.ts +70 -15
  77. package/src/BrowserPersistence.ts +66 -9
  78. package/src/BrowserRuntime.ts +48 -0
  79. package/src/BrowserSocket.ts +55 -22
  80. package/src/BrowserStream.ts +33 -18
  81. package/src/BrowserWorker.ts +50 -18
  82. package/src/BrowserWorkerRunner.ts +45 -14
  83. package/src/Clipboard.ts +52 -15
  84. package/src/Geolocation.ts +58 -15
  85. package/src/IndexedDb.ts +12 -0
  86. package/src/IndexedDbDatabase.ts +19 -0
  87. package/src/IndexedDbQueryBuilder.ts +8 -0
  88. package/src/IndexedDbTable.ts +55 -17
  89. package/src/IndexedDbVersion.ts +14 -0
  90. package/src/Permissions.ts +47 -17
  91. package/src/index.ts +0 -319
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserRuntime.js","names":["makeRunMain","runMain","fiber","globalThis","addEventListener","interruptUnsafe","id"],"sources":["../src/BrowserRuntime.ts"],"sourcesContent":[null],"mappings":"AAyBA,SAASA,WAAW,QAAuB,gBAAgB;AAE3D;;;;;;AAMA,OAAO,MAAMC,OAAO,gBA0BhBD,WAAW,CAAC,CAAC;EAAEE;AAAK,CAAE,KAAI;EAC5BC,UAAU,CAACC,gBAAgB,CAAC,cAAc,EAAE,MAAK;IAC/CF,KAAK,CAACG,eAAe,CAACH,KAAK,CAACI,EAAE,CAAC;EACjC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"BrowserRuntime.js","names":["makeRunMain","runMain","fiber","globalThis","addEventListener","interruptUnsafe","id"],"sources":["../src/BrowserRuntime.ts"],"sourcesContent":[null],"mappings":"AAyBA,SAASA,WAAW,QAAuB,gBAAgB;AAE3D;;;;;;;;;;;;;;;;;;;;;;AAsBA,OAAO,MAAMC,OAAO,gBA0DhBD,WAAW,CAAC,CAAC;EAAEE;AAAK,CAAE,KAAI;EAC5BC,UAAU,CAACC,gBAAgB,CAAC,cAAc,EAAE,MAAK;IAC/CF,KAAK,CAACG,eAAe,CAACH,KAAK,CAACI,EAAE,CAAC;EACjC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,26 +1,40 @@
1
1
  /**
2
- * Browser WebSocket layers for Effect sockets.
3
- *
4
- * This module provides the browser entry point for `Socket.Socket` values
5
- * backed by the platform `WebSocket` implementation. Use `layerWebSocket` when
6
- * client-side Effect programs, browser tests, RPC transports, or realtime UI
7
- * features need a bidirectional socket connected to a WebSocket URL, and use
8
- * `layerWebSocketConstructor` when lower-level socket APIs need access to the
9
- * browser constructor service.
10
- *
11
- * Browser WebSocket rules still apply. Connections are created through
12
- * `globalThis.WebSocket`, so URL schemes, subprotocol negotiation, mixed-content
13
- * blocking, cookies, authentication, CORS-like origin checks, and extension
14
- * negotiation are controlled by the browser and server rather than by Effect.
15
- * Close events are translated into socket errors unless the provided
16
- * `closeCodeIsError` predicate classifies the close code as clean, which is
17
- * useful for protocols that use application-specific close codes.
18
- *
19
- * Messages are delivered as strings or binary `Uint8Array` values; browser
20
- * `Blob` messages are read into bytes before they reach the socket handler.
21
- * Outgoing data should already be serialized to a string or bytes, and protocol
22
- * frames that represent an intentional close should be sent as `CloseEvent`
23
- * values so the underlying `WebSocket.close` code and reason are preserved.
2
+ * Provide Effect sockets backed by the browser `WebSocket` implementation.
3
+ *
4
+ * This module is the browser entry point for Effect's socket abstraction. Use
5
+ * {@link layerWebSocket} when a client-side Effect program needs a complete
6
+ * `Socket.Socket` connected to a WebSocket URL. Use
7
+ * {@link layerWebSocketConstructor} when lower-level socket code only needs the
8
+ * browser-backed constructor service.
9
+ *
10
+ * ## Mental model
11
+ *
12
+ * `layerWebSocket` delegates socket behavior to Effect's WebSocket support and
13
+ * supplies `globalThis.WebSocket` as the constructor. Incoming browser messages
14
+ * are normalized to strings or binary `Uint8Array` values. Browser `Blob`
15
+ * messages are read into bytes before they reach the socket consumer.
16
+ *
17
+ * Outgoing data should already be serialized to a string or bytes. To close the
18
+ * underlying browser socket with a specific code and reason, send a
19
+ * `CloseEvent` value so the close metadata is preserved.
20
+ *
21
+ * ## Common tasks
22
+ *
23
+ * - Connect RPC transports, browser tests, or realtime UI features to a
24
+ * WebSocket URL with {@link layerWebSocket}.
25
+ * - Provide only the browser constructor service with
26
+ * {@link layerWebSocketConstructor} when another socket layer builds the
27
+ * connection.
28
+ * - Customize `closeCodeIsError` for protocols that treat specific close codes
29
+ * as normal completion instead of socket failure.
30
+ *
31
+ * ## Gotchas
32
+ *
33
+ * Browser WebSocket rules still apply. URL schemes, subprotocol negotiation,
34
+ * mixed-content blocking, cookies, authentication, server origin checks, and
35
+ * extension negotiation are controlled by the browser and server rather than by
36
+ * Effect. Close events become socket errors unless `closeCodeIsError`
37
+ * classifies the close code as clean.
24
38
  *
25
39
  * @since 4.0.0
26
40
  */
@@ -29,6 +43,25 @@ import * as Socket from "effect/unstable/socket/Socket";
29
43
  /**
30
44
  * Creates a `Socket` layer connected to the given URL using the browser `WebSocket` constructor.
31
45
  *
46
+ * **When to use**
47
+ *
48
+ * Use when browser or client-side code needs a complete `Socket` layer
49
+ * connected to a WebSocket URL.
50
+ *
51
+ * **Details**
52
+ *
53
+ * Delegates socket construction to `Socket.makeWebSocket` and provides the
54
+ * browser-backed `WebSocketConstructor` service.
55
+ *
56
+ * **Gotchas**
57
+ *
58
+ * Browser WebSocket rules still control URL schemes, mixed-content blocking,
59
+ * cookies, authentication, origin checks, subprotocols, and extensions. Close
60
+ * events are errors unless `closeCodeIsError` classifies the close code as
61
+ * clean.
62
+ *
63
+ * @see {@link layerWebSocketConstructor} for providing only the browser constructor service
64
+ *
32
65
  * @category layers
33
66
  * @since 4.0.0
34
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserSocket.d.ts","sourceRoot":"","sources":["../src/BrowserSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,UAAU;IACpD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACtD,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAG1B,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CACvC,CAAA"}
1
+ {"version":3,"file":"BrowserSocket.d.ts","sourceRoot":"","sources":["../src/BrowserSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,UAAU;IACpD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACtD,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAG1B,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CACvC,CAAA"}
@@ -1,26 +1,40 @@
1
1
  /**
2
- * Browser WebSocket layers for Effect sockets.
3
- *
4
- * This module provides the browser entry point for `Socket.Socket` values
5
- * backed by the platform `WebSocket` implementation. Use `layerWebSocket` when
6
- * client-side Effect programs, browser tests, RPC transports, or realtime UI
7
- * features need a bidirectional socket connected to a WebSocket URL, and use
8
- * `layerWebSocketConstructor` when lower-level socket APIs need access to the
9
- * browser constructor service.
10
- *
11
- * Browser WebSocket rules still apply. Connections are created through
12
- * `globalThis.WebSocket`, so URL schemes, subprotocol negotiation, mixed-content
13
- * blocking, cookies, authentication, CORS-like origin checks, and extension
14
- * negotiation are controlled by the browser and server rather than by Effect.
15
- * Close events are translated into socket errors unless the provided
16
- * `closeCodeIsError` predicate classifies the close code as clean, which is
17
- * useful for protocols that use application-specific close codes.
18
- *
19
- * Messages are delivered as strings or binary `Uint8Array` values; browser
20
- * `Blob` messages are read into bytes before they reach the socket handler.
21
- * Outgoing data should already be serialized to a string or bytes, and protocol
22
- * frames that represent an intentional close should be sent as `CloseEvent`
23
- * values so the underlying `WebSocket.close` code and reason are preserved.
2
+ * Provide Effect sockets backed by the browser `WebSocket` implementation.
3
+ *
4
+ * This module is the browser entry point for Effect's socket abstraction. Use
5
+ * {@link layerWebSocket} when a client-side Effect program needs a complete
6
+ * `Socket.Socket` connected to a WebSocket URL. Use
7
+ * {@link layerWebSocketConstructor} when lower-level socket code only needs the
8
+ * browser-backed constructor service.
9
+ *
10
+ * ## Mental model
11
+ *
12
+ * `layerWebSocket` delegates socket behavior to Effect's WebSocket support and
13
+ * supplies `globalThis.WebSocket` as the constructor. Incoming browser messages
14
+ * are normalized to strings or binary `Uint8Array` values. Browser `Blob`
15
+ * messages are read into bytes before they reach the socket consumer.
16
+ *
17
+ * Outgoing data should already be serialized to a string or bytes. To close the
18
+ * underlying browser socket with a specific code and reason, send a
19
+ * `CloseEvent` value so the close metadata is preserved.
20
+ *
21
+ * ## Common tasks
22
+ *
23
+ * - Connect RPC transports, browser tests, or realtime UI features to a
24
+ * WebSocket URL with {@link layerWebSocket}.
25
+ * - Provide only the browser constructor service with
26
+ * {@link layerWebSocketConstructor} when another socket layer builds the
27
+ * connection.
28
+ * - Customize `closeCodeIsError` for protocols that treat specific close codes
29
+ * as normal completion instead of socket failure.
30
+ *
31
+ * ## Gotchas
32
+ *
33
+ * Browser WebSocket rules still apply. URL schemes, subprotocol negotiation,
34
+ * mixed-content blocking, cookies, authentication, server origin checks, and
35
+ * extension negotiation are controlled by the browser and server rather than by
36
+ * Effect. Close events become socket errors unless `closeCodeIsError`
37
+ * classifies the close code as clean.
24
38
  *
25
39
  * @since 4.0.0
26
40
  */
@@ -29,6 +43,25 @@ import * as Socket from "effect/unstable/socket/Socket";
29
43
  /**
30
44
  * Creates a `Socket` layer connected to the given URL using the browser `WebSocket` constructor.
31
45
  *
46
+ * **When to use**
47
+ *
48
+ * Use when browser or client-side code needs a complete `Socket` layer
49
+ * connected to a WebSocket URL.
50
+ *
51
+ * **Details**
52
+ *
53
+ * Delegates socket construction to `Socket.makeWebSocket` and provides the
54
+ * browser-backed `WebSocketConstructor` service.
55
+ *
56
+ * **Gotchas**
57
+ *
58
+ * Browser WebSocket rules still control URL schemes, mixed-content blocking,
59
+ * cookies, authentication, origin checks, subprotocols, and extensions. Close
60
+ * events are errors unless `closeCodeIsError` classifies the close code as
61
+ * clean.
62
+ *
63
+ * @see {@link layerWebSocketConstructor} for providing only the browser constructor service
64
+ *
32
65
  * @category layers
33
66
  * @since 4.0.0
34
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserSocket.js","names":["Layer","Socket","layerWebSocket","url","options","effect","makeWebSocket","pipe","provide","layerWebSocketConstructor","layerWebSocketConstructorGlobal"],"sources":["../src/BrowserSocket.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD;;;;;;AAMA,OAAO,MAAMC,cAAc,GAAGA,CAACC,GAAW,EAAEC,OAE3C,KACCJ,KAAK,CAACK,MAAM,CAACJ,MAAM,CAACA,MAAM,EAAEA,MAAM,CAACK,aAAa,CAACH,GAAG,EAAEC,OAAO,CAAC,CAAC,CAACG,IAAI,CAClEP,KAAK,CAACQ,OAAO,CAACC,yBAAyB,CAAC,CACzC;AAEH;;;;;;AAMA,OAAO,MAAMA,yBAAyB,GACpCR,MAAM,CAACS,+BAA+B","ignoreList":[]}
1
+ {"version":3,"file":"BrowserSocket.js","names":["Layer","Socket","layerWebSocket","url","options","effect","makeWebSocket","pipe","provide","layerWebSocketConstructor","layerWebSocketConstructorGlobal"],"sources":["../src/BrowserSocket.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMC,cAAc,GAAGA,CAACC,GAAW,EAAEC,OAE3C,KACCJ,KAAK,CAACK,MAAM,CAACJ,MAAM,CAACA,MAAM,EAAEA,MAAM,CAACK,aAAa,CAACH,GAAG,EAAEC,OAAO,CAAC,CAAC,CAACG,IAAI,CAClEP,KAAK,CAACQ,OAAO,CAACC,yBAAyB,CAAC,CACzC;AAEH;;;;;;AAMA,OAAO,MAAMA,yBAAyB,GACpCR,MAAM,CAACS,+BAA+B","ignoreList":[]}
@@ -1,25 +1,40 @@
1
1
  /**
2
- * Browser `Stream` constructors for DOM event targets.
3
- *
4
- * This module provides typed helpers for turning `window.addEventListener` and
5
- * `document.addEventListener` callbacks into Effect `Stream`s. They are useful
6
- * for UI and runtime signals such as resize, visibility, keyboard, pointer,
7
- * focus, online / offline, and other browser events that should be composed
8
- * with Effect stream operators and finalized with the consuming fiber.
9
- *
10
- * Browser events are push-based `EventTarget` notifications, so they do not
11
- * apply Web Streams backpressure to the browser event source. Events are
12
- * buffered until downstream pulls them; the default buffer is unbounded, so
13
- * high-frequency sources like scroll, pointermove, or mousemove should usually
14
- * set `bufferSize` and use stream operators that sample, debounce, throttle, or
15
- * drop work as appropriate.
16
- *
17
- * These helpers are for DOM events, not for adapting `ReadableStream` request
18
- * or response bodies. Fetch bodies follow the Web Streams body rules, including
19
- * single-consumer locking and disturbed bodies after reads, and should be
20
- * handled with body-specific HTTP or Web Streams APIs instead. When using the
21
- * browser `once` option, pair the stream with `Stream.take(1)` if a finite
22
- * stream is required.
2
+ * Convert browser DOM events into Effect streams.
3
+ *
4
+ * This module provides typed constructors for listening to `window` and
5
+ * `document` events from Effect programs. Use {@link fromEventListenerWindow}
6
+ * for viewport, network, focus, pointer, keyboard, and other `Window` events,
7
+ * and use {@link fromEventListenerDocument} for document lifecycle,
8
+ * visibility, selection, fullscreen, and other `Document` events.
9
+ *
10
+ * ## Mental model
11
+ *
12
+ * Each constructor registers a DOM `addEventListener` callback when the stream
13
+ * is consumed and removes it when the stream is finalized. Browser events are
14
+ * push-based `EventTarget` notifications, so the browser does not slow down the
15
+ * event source when downstream stream processing is busy. Events are buffered
16
+ * inside the stream until a consumer pulls them.
17
+ *
18
+ * ## Common tasks
19
+ *
20
+ * - Track browser state such as resize, online / offline, focus, visibility, or
21
+ * pointer activity with Effect stream operators.
22
+ * - Scope DOM listeners to a fiber so they are removed when the consuming
23
+ * effect is interrupted or completes.
24
+ * - Set `bufferSize` for bursty event sources before applying sampling,
25
+ * throttling, debouncing, or dropping logic downstream.
26
+ *
27
+ * ## Gotchas
28
+ *
29
+ * The default buffer is unbounded. High-frequency sources such as `scroll`,
30
+ * `pointermove`, or `mousemove` should usually specify `bufferSize` and reduce
31
+ * the event rate with stream operators.
32
+ *
33
+ * These helpers are for DOM events, not for `ReadableStream` request or
34
+ * response bodies. Fetch bodies follow Web Streams rules such as
35
+ * single-consumer locking and disturbed bodies after reads. When using the DOM
36
+ * `once` option, also use `Stream.take(1)` if the consuming code needs a finite
37
+ * stream.
23
38
  *
24
39
  * @since 4.0.0
25
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserStream.d.ts","sourceRoot":"","sources":["../src/BrowserStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,cAAc,EACpE,MAAM,CAAC,EACP,UAAU,OAAO,GAAG;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,GAAG,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAuE,CAAA;AAEvH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,gBAAgB,EACxE,MAAM,CAAC,EACP,UAAU,OAAO,GAAG;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,GAAG,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CACsB,CAAA"}
1
+ {"version":3,"file":"BrowserStream.d.ts","sourceRoot":"","sources":["../src/BrowserStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,cAAc,EACpE,MAAM,CAAC,EACP,UAAU,OAAO,GAAG;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,GAAG,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAuE,CAAA;AAEvH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,gBAAgB,EACxE,MAAM,CAAC,EACP,UAAU,OAAO,GAAG;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,GAAG,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CACsB,CAAA"}
@@ -1,25 +1,40 @@
1
1
  /**
2
- * Browser `Stream` constructors for DOM event targets.
3
- *
4
- * This module provides typed helpers for turning `window.addEventListener` and
5
- * `document.addEventListener` callbacks into Effect `Stream`s. They are useful
6
- * for UI and runtime signals such as resize, visibility, keyboard, pointer,
7
- * focus, online / offline, and other browser events that should be composed
8
- * with Effect stream operators and finalized with the consuming fiber.
9
- *
10
- * Browser events are push-based `EventTarget` notifications, so they do not
11
- * apply Web Streams backpressure to the browser event source. Events are
12
- * buffered until downstream pulls them; the default buffer is unbounded, so
13
- * high-frequency sources like scroll, pointermove, or mousemove should usually
14
- * set `bufferSize` and use stream operators that sample, debounce, throttle, or
15
- * drop work as appropriate.
16
- *
17
- * These helpers are for DOM events, not for adapting `ReadableStream` request
18
- * or response bodies. Fetch bodies follow the Web Streams body rules, including
19
- * single-consumer locking and disturbed bodies after reads, and should be
20
- * handled with body-specific HTTP or Web Streams APIs instead. When using the
21
- * browser `once` option, pair the stream with `Stream.take(1)` if a finite
22
- * stream is required.
2
+ * Convert browser DOM events into Effect streams.
3
+ *
4
+ * This module provides typed constructors for listening to `window` and
5
+ * `document` events from Effect programs. Use {@link fromEventListenerWindow}
6
+ * for viewport, network, focus, pointer, keyboard, and other `Window` events,
7
+ * and use {@link fromEventListenerDocument} for document lifecycle,
8
+ * visibility, selection, fullscreen, and other `Document` events.
9
+ *
10
+ * ## Mental model
11
+ *
12
+ * Each constructor registers a DOM `addEventListener` callback when the stream
13
+ * is consumed and removes it when the stream is finalized. Browser events are
14
+ * push-based `EventTarget` notifications, so the browser does not slow down the
15
+ * event source when downstream stream processing is busy. Events are buffered
16
+ * inside the stream until a consumer pulls them.
17
+ *
18
+ * ## Common tasks
19
+ *
20
+ * - Track browser state such as resize, online / offline, focus, visibility, or
21
+ * pointer activity with Effect stream operators.
22
+ * - Scope DOM listeners to a fiber so they are removed when the consuming
23
+ * effect is interrupted or completes.
24
+ * - Set `bufferSize` for bursty event sources before applying sampling,
25
+ * throttling, debouncing, or dropping logic downstream.
26
+ *
27
+ * ## Gotchas
28
+ *
29
+ * The default buffer is unbounded. High-frequency sources such as `scroll`,
30
+ * `pointermove`, or `mousemove` should usually specify `bufferSize` and reduce
31
+ * the event rate with stream operators.
32
+ *
33
+ * These helpers are for DOM events, not for `ReadableStream` request or
34
+ * response bodies. Fetch bodies follow Web Streams rules such as
35
+ * single-consumer locking and disturbed bodies after reads. When using the DOM
36
+ * `once` option, also use `Stream.take(1)` if the consuming code needs a finite
37
+ * stream.
23
38
  *
24
39
  * @since 4.0.0
25
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserStream.js","names":["Stream","fromEventListenerWindow","type","options","fromEventListener","window","fromEventListenerDocument","document"],"sources":["../src/BrowserStream.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;;;;;;;;AAYA,OAAO,MAAMC,uBAAuB,GAAGA,CACrCC,IAAO,EACPC,OAKa,KACsCH,MAAM,CAACI,iBAAiB,CAAoBC,MAAM,EAAEH,IAAI,EAAEC,OAAO,CAAC;AAEvH;;;;;;;;;;;;AAYA,OAAO,MAAMG,yBAAyB,GAAGA,CACvCJ,IAAO,EACPC,OAKa,KAEbH,MAAM,CAACI,iBAAiB,CAAsBG,QAAQ,EAAEL,IAAI,EAAEC,OAAO,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"BrowserStream.js","names":["Stream","fromEventListenerWindow","type","options","fromEventListener","window","fromEventListenerDocument","document"],"sources":["../src/BrowserStream.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;;;;;;;;AAYA,OAAO,MAAMC,uBAAuB,GAAGA,CACrCC,IAAO,EACPC,OAKa,KACsCH,MAAM,CAACI,iBAAiB,CAAoBC,MAAM,EAAEH,IAAI,EAAEC,OAAO,CAAC;AAEvH;;;;;;;;;;;;AAYA,OAAO,MAAMG,yBAAyB,GAAGA,CACvCJ,IAAO,EACPC,OAKa,KAEbH,MAAM,CAACI,iBAAiB,CAAsBG,QAAQ,EAAEL,IAAI,EAAEC,OAAO,CAAC","ignoreList":[]}
@@ -3,6 +3,23 @@ import * as Worker from "effect/unstable/workers/Worker";
3
3
  /**
4
4
  * Creates browser worker layers by combining the default `WorkerPlatform` with a spawner for `Worker`, `SharedWorker`, or `MessagePort` instances.
5
5
  *
6
+ * **When to use**
7
+ *
8
+ * Use when browser parent or client code needs both the browser
9
+ * `WorkerPlatform` and a `Spawner` from one layer.
10
+ *
11
+ * **Details**
12
+ *
13
+ * The `spawn` callback receives the numeric worker id and may return a
14
+ * `Worker`, `SharedWorker`, or `MessagePort`.
15
+ *
16
+ * **Gotchas**
17
+ *
18
+ * Scope finalization sends the worker close protocol over the port. Dedicated
19
+ * workers created by `spawn` are not terminated by this layer.
20
+ *
21
+ * @see {@link layerPlatform} for providing only the browser worker platform
22
+ *
6
23
  * @category layers
7
24
  * @since 4.0.0
8
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../src/BrowserWorker.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAA;AAGxD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,KACzD,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAIlD,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CA2C5D,CAAA"}
1
+ {"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../src/BrowserWorker.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAA;AAGxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,KACzD,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAIlD,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CA2C5D,CAAA"}
@@ -1,22 +1,37 @@
1
1
  /**
2
- * Parent-side browser support for Effect workers.
3
- *
4
- * This module provides the `WorkerPlatform` used by browser applications that
5
- * spawn or connect to `Worker`, `SharedWorker`, and `MessagePort` endpoints
6
- * through Effect's worker protocol. Pair it with `BrowserWorkerRunner` in the
7
- * worker entrypoint when building worker-backed RPC clients, moving CPU-bound
8
- * work off the main thread, isolating browser-only services, or adapting an
9
- * existing `MessageChannel` in tests and custom transports.
10
- *
11
- * Dedicated workers communicate through the worker object itself, while shared
12
- * workers communicate through `worker.port`; raw `MessagePort` values are also
13
- * accepted and are started when supported. Messages are posted with the browser
14
- * structured-clone algorithm, so payloads must be cloneable by the target
15
- * runtime. Transfer lists can avoid copying values such as `ArrayBuffer` or
16
- * `MessagePort`, but transferring moves ownership away from the sender and
17
- * invalid or mismatched transferables can fail the send. Scope finalization
18
- * sends the worker close signal over the port; the application that created a
19
- * dedicated `Worker` remains responsible for any broader lifecycle such as
2
+ * Parent-side browser platform for running Effect workers.
3
+ *
4
+ * This module provides the `WorkerPlatform` used by browser code that spawns or
5
+ * connects to `Worker`, `SharedWorker`, and `MessagePort` endpoints through
6
+ * Effect's worker protocol. Pair it with `BrowserWorkerRunner` in the worker
7
+ * entrypoint when building worker-backed RPC clients, moving CPU-bound work off
8
+ * the main thread, isolating browser-only services, or adapting an existing
9
+ * `MessageChannel` in tests.
10
+ *
11
+ * **Mental model**
12
+ *
13
+ * Browser worker communication is normalized to a message port. Dedicated
14
+ * workers post messages on the worker object itself, shared workers post
15
+ * through `worker.port`, and raw `MessagePort` values can be supplied directly.
16
+ * `layerPlatform` provides only the browser platform, while `layer` combines
17
+ * the platform with a `Spawner` that creates a worker endpoint for each worker
18
+ * id.
19
+ *
20
+ * **Common tasks**
21
+ *
22
+ * Use `layer` when parent code should both provide browser worker messaging and
23
+ * define how workers are spawned. Use `layerPlatform` when a spawner is already
24
+ * provided elsewhere. Return a `MessagePort` from the spawner for tests or
25
+ * custom channels, a `Worker` for dedicated workers, or a `SharedWorker` when
26
+ * multiple browser contexts should share one worker runtime.
27
+ *
28
+ * **Gotchas**
29
+ *
30
+ * Messages use the browser structured-clone algorithm, so payloads and transfer
31
+ * lists must be accepted by the target runtime. Transferring an `ArrayBuffer` or
32
+ * `MessagePort` moves ownership away from the sender. Scope finalization sends
33
+ * the worker close signal over the port, but code that created a dedicated
34
+ * `Worker` remains responsible for broader lifecycle concerns such as
20
35
  * terminating it.
21
36
  *
22
37
  * @since 4.0.0
@@ -30,6 +45,23 @@ import { WorkerError, WorkerReceiveError } from "effect/unstable/workers/WorkerE
30
45
  /**
31
46
  * Creates browser worker layers by combining the default `WorkerPlatform` with a spawner for `Worker`, `SharedWorker`, or `MessagePort` instances.
32
47
  *
48
+ * **When to use**
49
+ *
50
+ * Use when browser parent or client code needs both the browser
51
+ * `WorkerPlatform` and a `Spawner` from one layer.
52
+ *
53
+ * **Details**
54
+ *
55
+ * The `spawn` callback receives the numeric worker id and may return a
56
+ * `Worker`, `SharedWorker`, or `MessagePort`.
57
+ *
58
+ * **Gotchas**
59
+ *
60
+ * Scope finalization sends the worker close protocol over the port. Dedicated
61
+ * workers created by `spawn` are not terminated by this layer.
62
+ *
63
+ * @see {@link layerPlatform} for providing only the browser worker platform
64
+ *
33
65
  * @category layers
34
66
  * @since 4.0.0
35
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorker.js","names":["Deferred","Effect","Layer","Scope","Worker","WorkerError","WorkerReceiveError","layer","spawn","merge","layerPlatform","layerSpawner","succeed","WorkerPlatform","makePlatform","setup","scope","worker","port","as","addFinalizer","sync","postMessage","listen","deferred","emit","onMessage","event","data","onError","doneUnsafe","reason","message","cause","error","addEventListener","start","removeEventListener"],"sources":["../src/BrowserWorker.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,KAAKA,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,gCAAgC;AACxD,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,qCAAqC;AAErF;;;;;;AAMA,OAAO,MAAMC,KAAK,GAChBC,KAA0D,IAE1DN,KAAK,CAACO,KAAK,CACTC,aAAa,EACbN,MAAM,CAACO,YAAY,CAACH,KAAK,CAAC,CAC3B;AAEH;;;;;;AAMA,OAAO,MAAME,aAAa,gBAAuCR,KAAK,CAACU,OAAO,CAACR,MAAM,CAACS,cAAc,CAAC,cACnGT,MAAM,CAACU,YAAY,EAA6D,CAAC;EAC/EC,KAAKA,CAAC;IAAEC,KAAK;IAAEC;EAAM,CAAE;IACrB,MAAMC,IAAI,GAAG,MAAM,IAAID,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAGD,MAAM;IACpD,OAAOhB,MAAM,CAACkB,EAAE,CACdhB,KAAK,CAACiB,YAAY,CAChBJ,KAAK,EACLf,MAAM,CAACoB,IAAI,CAAC,MAAK;MACfH,IAAI,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CACH,EACDJ,IAAI,CACL;EACH,CAAC;EACDK,MAAMA,CAAC;IAAEC,QAAQ;IAAEC,IAAI;IAAEP,IAAI;IAAEF;EAAK,CAAE;IACpC,SAASU,SAASA,CAACC,KAAmB;MACpCF,IAAI,CAACE,KAAK,CAACC,IAAI,CAAC;IAClB;IACA,SAASC,OAAOA,CAACF,KAAiB;MAChC3B,QAAQ,CAAC8B,UAAU,CACjBN,QAAQ,EACR,IAAInB,WAAW,CAAC;QACd0B,MAAM,EAAE,IAAIzB,kBAAkB,CAAC;UAC7B0B,OAAO,EAAE,4BAA4B;UACrCC,KAAK,EAAEN,KAAK,CAACO,KAAK,IAAIP,KAAK,CAACK;SAC7B;OACF,CAAC,CACH;IACH;IACAd,IAAI,CAACiB,gBAAgB,CAAC,SAAS,EAAET,SAAgB,CAAC;IAClDR,IAAI,CAACiB,gBAAgB,CAAC,OAAO,EAAEN,OAAc,CAAC;IAC9C,IAAI,OAAO,IAAIX,IAAI,EAAE;MACnBA,IAAI,CAACkB,KAAK,EAAE;IACd;IACA,OAAOjC,KAAK,CAACiB,YAAY,CACvBJ,KAAK,EACLf,MAAM,CAACoB,IAAI,CAAC,MAAK;MACfH,IAAI,CAACmB,mBAAmB,CAAC,SAAS,EAAEX,SAAgB,CAAC;MACrDR,IAAI,CAACmB,mBAAmB,CAAC,OAAO,EAAER,OAAc,CAAC;IACnD,CAAC,CAAC,CACH;EACH;CACD,CAAC,CACH","ignoreList":[]}
1
+ {"version":3,"file":"BrowserWorker.js","names":["Deferred","Effect","Layer","Scope","Worker","WorkerError","WorkerReceiveError","layer","spawn","merge","layerPlatform","layerSpawner","succeed","WorkerPlatform","makePlatform","setup","scope","worker","port","as","addFinalizer","sync","postMessage","listen","deferred","emit","onMessage","event","data","onError","doneUnsafe","reason","message","cause","error","addEventListener","start","removeEventListener"],"sources":["../src/BrowserWorker.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,OAAO,KAAKA,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,gCAAgC;AACxD,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,qCAAqC;AAErF;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,MAAMC,KAAK,GAChBC,KAA0D,IAE1DN,KAAK,CAACO,KAAK,CACTC,aAAa,EACbN,MAAM,CAACO,YAAY,CAACH,KAAK,CAAC,CAC3B;AAEH;;;;;;AAMA,OAAO,MAAME,aAAa,gBAAuCR,KAAK,CAACU,OAAO,CAACR,MAAM,CAACS,cAAc,CAAC,cACnGT,MAAM,CAACU,YAAY,EAA6D,CAAC;EAC/EC,KAAKA,CAAC;IAAEC,KAAK;IAAEC;EAAM,CAAE;IACrB,MAAMC,IAAI,GAAG,MAAM,IAAID,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAGD,MAAM;IACpD,OAAOhB,MAAM,CAACkB,EAAE,CACdhB,KAAK,CAACiB,YAAY,CAChBJ,KAAK,EACLf,MAAM,CAACoB,IAAI,CAAC,MAAK;MACfH,IAAI,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CACH,EACDJ,IAAI,CACL;EACH,CAAC;EACDK,MAAMA,CAAC;IAAEC,QAAQ;IAAEC,IAAI;IAAEP,IAAI;IAAEF;EAAK,CAAE;IACpC,SAASU,SAASA,CAACC,KAAmB;MACpCF,IAAI,CAACE,KAAK,CAACC,IAAI,CAAC;IAClB;IACA,SAASC,OAAOA,CAACF,KAAiB;MAChC3B,QAAQ,CAAC8B,UAAU,CACjBN,QAAQ,EACR,IAAInB,WAAW,CAAC;QACd0B,MAAM,EAAE,IAAIzB,kBAAkB,CAAC;UAC7B0B,OAAO,EAAE,4BAA4B;UACrCC,KAAK,EAAEN,KAAK,CAACO,KAAK,IAAIP,KAAK,CAACK;SAC7B;OACF,CAAC,CACH;IACH;IACAd,IAAI,CAACiB,gBAAgB,CAAC,SAAS,EAAET,SAAgB,CAAC;IAClDR,IAAI,CAACiB,gBAAgB,CAAC,OAAO,EAAEN,OAAc,CAAC;IAC9C,IAAI,OAAO,IAAIX,IAAI,EAAE;MACnBA,IAAI,CAACkB,KAAK,EAAE;IACd;IACA,OAAOjC,KAAK,CAACiB,YAAY,CACvBJ,KAAK,EACLf,MAAM,CAACoB,IAAI,CAAC,MAAK;MACfH,IAAI,CAACmB,mBAAmB,CAAC,SAAS,EAAEX,SAAgB,CAAC;MACrDR,IAAI,CAACmB,mBAAmB,CAAC,OAAO,EAAER,OAAc,CAAC;IACnD,CAAC,CAAC,CACH;EACH;CACD,CAAC,CACH","ignoreList":[]}
@@ -10,6 +10,25 @@ export declare const make: (self: MessagePort | Window) => WorkerRunner.WorkerRu
10
10
  /**
11
11
  * Layer that provides a browser `WorkerRunnerPlatform` using the global `self` worker context.
12
12
  *
13
+ * **When to use**
14
+ *
15
+ * Use when a browser worker entry point uses the ambient `self` object as the
16
+ * worker transport.
17
+ *
18
+ * **Details**
19
+ *
20
+ * Delegates to `make(self)` and provides the runner-side platform used by
21
+ * protocols such as `RpcServer.layerProtocolWorkerRunner`.
22
+ *
23
+ * **Gotchas**
24
+ *
25
+ * This layer depends on the browser worker global `self`. Use
26
+ * `layerMessagePort` when the transport is an explicit `MessagePort` or
27
+ * `Window`.
28
+ *
29
+ * @see {@link make} for constructing a runner platform from an explicit endpoint
30
+ * @see {@link layerMessagePort} for providing a platform from an explicit endpoint
31
+ *
13
32
  * @category layers
14
33
  * @since 4.0.0
15
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorkerRunner.d.ts","sourceRoot":"","sources":["../src/BrowserWorkerRunner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AAUpE;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,WAAW,GAAG,MAAM,KAAG,YAAY,CAAC,oBAAoB,CAAC,SAAS,CA2H3F,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAEhE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,WAAW,GAAG,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAC7C,CAAA"}
1
+ {"version":3,"file":"BrowserWorkerRunner.d.ts","sourceRoot":"","sources":["../src/BrowserWorkerRunner.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AAUpE;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,WAAW,GAAG,MAAM,KAAG,YAAY,CAAC,oBAAoB,CAAC,SAAS,CA2H3F,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAEhE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,WAAW,GAAG,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAC7C,CAAA"}
@@ -1,21 +1,33 @@
1
1
  /**
2
- * Browser runtime support for Effect worker runners.
2
+ * Runner-side browser platform for Effect worker handlers.
3
3
  *
4
- * This module is intended for code that is already executing in a browser
5
- * worker context, or for tests and adapters that supply a `MessagePort` or
6
- * `Window` endpoint directly. It provides the `WorkerRunnerPlatform` used by
7
- * `WorkerRunner` and `RpcServer.layerProtocolWorkerRunner` to receive parent
8
- * or client requests, run Effect handlers, and send responses through the
9
- * browser `postMessage` channel.
4
+ * This module is for code already executing inside a browser worker, or for
5
+ * tests and adapters that pass a `MessagePort` or `Window` endpoint directly.
6
+ * It provides the `WorkerRunnerPlatform` used by `WorkerRunner` and protocols
7
+ * such as `RpcServer.layerProtocolWorkerRunner` to receive parent or client
8
+ * requests, run Effect handlers, and post responses back through the browser
9
+ * messaging channel.
10
10
  *
11
- * Use it with `BrowserWorker` when a browser application needs to move RPC
11
+ * **Mental model**
12
+ *
13
+ * Dedicated workers use the ambient `self` endpoint. Shared workers receive one
14
+ * `MessagePort` per `onconnect` event, and this module caches ports that arrive
15
+ * before the runner layer starts. `layer` reads from the global worker `self`;
16
+ * `make` and `layerMessagePort` are for explicit endpoints supplied by tests,
17
+ * custom channels, or adapter code.
18
+ *
19
+ * **Common tasks**
20
+ *
21
+ * Pair this module with `BrowserWorker` in the parent page when moving RPC
12
22
  * handlers, CPU-bound computations, or browser-only services into a dedicated
13
- * worker or shared worker. Dedicated workers communicate through the current
14
- * `self` endpoint; shared workers accept multiple `onconnect` ports and cache
15
- * ports that connect before the runner layer starts. Messages still use the
16
- * browser structured-clone algorithm, so payload schemas, transfer lists,
17
- * `messageerror` events, and the lifetime of each `MessagePort` must be
18
- * considered when crossing worker boundaries.
23
+ * worker or shared worker. Use `layer` in normal worker entry points and
24
+ * `layerMessagePort` when a test or integration already owns the transport.
25
+ *
26
+ * **Gotchas**
27
+ *
28
+ * Payloads and transfer lists must satisfy the browser structured-clone
29
+ * algorithm. `messageerror` and `error` events fail the runner, and each
30
+ * connected `MessagePort` is closed when its scope finalizes.
19
31
  *
20
32
  * @since 4.0.0
21
33
  */
@@ -153,6 +165,25 @@ export const make = self => ({
153
165
  /**
154
166
  * Layer that provides a browser `WorkerRunnerPlatform` using the global `self` worker context.
155
167
  *
168
+ * **When to use**
169
+ *
170
+ * Use when a browser worker entry point uses the ambient `self` object as the
171
+ * worker transport.
172
+ *
173
+ * **Details**
174
+ *
175
+ * Delegates to `make(self)` and provides the runner-side platform used by
176
+ * protocols such as `RpcServer.layerProtocolWorkerRunner`.
177
+ *
178
+ * **Gotchas**
179
+ *
180
+ * This layer depends on the browser worker global `self`. Use
181
+ * `layerMessagePort` when the transport is an explicit `MessagePort` or
182
+ * `Window`.
183
+ *
184
+ * @see {@link make} for constructing a runner platform from an explicit endpoint
185
+ * @see {@link layerMessagePort} for providing a platform from an explicit endpoint
186
+ *
156
187
  * @category layers
157
188
  * @since 4.0.0
158
189
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorkerRunner.js","names":["Cause","Deferred","Effect","Exit","Fiber","identity","Layer","Queue","Scope","WorkerError","WorkerReceiveError","WorkerRunner","cachedPorts","Set","globalHandleConnect","event","add","ports","self","onconnect","make","start","fnUntraced","disconnects","currentPortId","Map","sendUnsafe","portId","message","transfer","get","postMessage","send","sync","run","handler","scopedWith","scope","closeLatch","makeUnsafe","trackFiber","runIn","services","context","runFork","runForkWith","onExit","exit","_tag","hasInterruptsOnly","cause","logError","onMessage","data","result","isEffect","fiber","addObserver","port","size","doneUnsafe","void","delete","close","onMessageError","error","reason","onError","handlePort","portScope","forkUnsafe","set","onMsg","addEventListener","runSync","addFinalizer","removeEventListener","prevOnConnect","clear","await","layer","WorkerRunnerPlatform","layerMessagePort","succeed"],"sources":["../src/BrowserWorkerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BrowserWorkerRunner.js","names":["Cause","Deferred","Effect","Exit","Fiber","identity","Layer","Queue","Scope","WorkerError","WorkerReceiveError","WorkerRunner","cachedPorts","Set","globalHandleConnect","event","add","ports","self","onconnect","make","start","fnUntraced","disconnects","currentPortId","Map","sendUnsafe","portId","message","transfer","get","postMessage","send","sync","run","handler","scopedWith","scope","closeLatch","makeUnsafe","trackFiber","runIn","services","context","runFork","runForkWith","onExit","exit","_tag","hasInterruptsOnly","cause","logError","onMessage","data","result","isEffect","fiber","addObserver","port","size","doneUnsafe","void","delete","close","onMessageError","error","reason","onError","handlePort","portScope","forkUnsafe","set","onMsg","addEventListener","runSync","addFinalizer","removeEventListener","prevOnConnect","clear","await","layer","WorkerRunnerPlatform","layerMessagePort","succeed"],"sources":["../src/BrowserWorkerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}