@effect/platform-browser 4.0.0-beta.66 → 4.0.0-beta.67

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 (84) hide show
  1. package/dist/BrowserHttpClient.d.ts +18 -8
  2. package/dist/BrowserHttpClient.d.ts.map +1 -1
  3. package/dist/BrowserHttpClient.js +45 -8
  4. package/dist/BrowserHttpClient.js.map +1 -1
  5. package/dist/BrowserKeyValueStore.d.ts +13 -6
  6. package/dist/BrowserKeyValueStore.d.ts.map +1 -1
  7. package/dist/BrowserKeyValueStore.js +126 -2
  8. package/dist/BrowserKeyValueStore.js.map +1 -1
  9. package/dist/BrowserPersistence.d.ts +6 -2
  10. package/dist/BrowserPersistence.d.ts.map +1 -1
  11. package/dist/BrowserPersistence.js +6 -2
  12. package/dist/BrowserPersistence.js.map +1 -1
  13. package/dist/BrowserRuntime.d.ts +31 -4
  14. package/dist/BrowserRuntime.d.ts.map +1 -1
  15. package/dist/BrowserRuntime.js +3 -1
  16. package/dist/BrowserRuntime.js.map +1 -1
  17. package/dist/BrowserSocket.d.ts +29 -4
  18. package/dist/BrowserSocket.d.ts.map +1 -1
  19. package/dist/BrowserSocket.js +29 -4
  20. package/dist/BrowserSocket.js.map +1 -1
  21. package/dist/BrowserStream.d.ts +25 -3
  22. package/dist/BrowserStream.d.ts.map +1 -1
  23. package/dist/BrowserStream.js +25 -3
  24. package/dist/BrowserStream.js.map +1 -1
  25. package/dist/BrowserWorker.d.ts +6 -2
  26. package/dist/BrowserWorker.d.ts.map +1 -1
  27. package/dist/BrowserWorker.js +27 -3
  28. package/dist/BrowserWorker.js.map +1 -1
  29. package/dist/BrowserWorkerRunner.d.ts +9 -3
  30. package/dist/BrowserWorkerRunner.d.ts.map +1 -1
  31. package/dist/BrowserWorkerRunner.js +28 -4
  32. package/dist/BrowserWorkerRunner.js.map +1 -1
  33. package/dist/Clipboard.d.ts +30 -6
  34. package/dist/Clipboard.d.ts.map +1 -1
  35. package/dist/Clipboard.js +27 -5
  36. package/dist/Clipboard.js.map +1 -1
  37. package/dist/Geolocation.d.ts +44 -10
  38. package/dist/Geolocation.d.ts.map +1 -1
  39. package/dist/Geolocation.js +38 -8
  40. package/dist/Geolocation.js.map +1 -1
  41. package/dist/IndexedDb.d.ts +38 -11
  42. package/dist/IndexedDb.d.ts.map +1 -1
  43. package/dist/IndexedDb.js +35 -13
  44. package/dist/IndexedDb.js.map +1 -1
  45. package/dist/IndexedDbDatabase.d.ts +57 -10
  46. package/dist/IndexedDbDatabase.d.ts.map +1 -1
  47. package/dist/IndexedDbDatabase.js +36 -3
  48. package/dist/IndexedDbDatabase.js.map +1 -1
  49. package/dist/IndexedDbQueryBuilder.d.ts +103 -28
  50. package/dist/IndexedDbQueryBuilder.d.ts.map +1 -1
  51. package/dist/IndexedDbQueryBuilder.js +56 -26
  52. package/dist/IndexedDbQueryBuilder.js.map +1 -1
  53. package/dist/IndexedDbTable.d.ts +57 -13
  54. package/dist/IndexedDbTable.d.ts.map +1 -1
  55. package/dist/IndexedDbTable.js +21 -1
  56. package/dist/IndexedDbTable.js.map +1 -1
  57. package/dist/IndexedDbVersion.d.ts +37 -7
  58. package/dist/IndexedDbVersion.d.ts.map +1 -1
  59. package/dist/IndexedDbVersion.js +3 -1
  60. package/dist/IndexedDbVersion.js.map +1 -1
  61. package/dist/Permissions.d.ts +35 -8
  62. package/dist/Permissions.d.ts.map +1 -1
  63. package/dist/Permissions.js +31 -6
  64. package/dist/Permissions.js.map +1 -1
  65. package/dist/index.d.ts +12 -12
  66. package/dist/index.js +12 -12
  67. package/package.json +3 -3
  68. package/src/BrowserHttpClient.ts +48 -9
  69. package/src/BrowserKeyValueStore.ts +142 -4
  70. package/src/BrowserPersistence.ts +19 -3
  71. package/src/BrowserRuntime.ts +31 -4
  72. package/src/BrowserSocket.ts +29 -4
  73. package/src/BrowserStream.ts +25 -3
  74. package/src/BrowserWorker.ts +27 -3
  75. package/src/BrowserWorkerRunner.ts +28 -4
  76. package/src/Clipboard.ts +30 -6
  77. package/src/Geolocation.ts +44 -10
  78. package/src/IndexedDb.ts +39 -21
  79. package/src/IndexedDbDatabase.ts +57 -10
  80. package/src/IndexedDbQueryBuilder.ts +172 -58
  81. package/src/IndexedDbTable.ts +57 -13
  82. package/src/IndexedDbVersion.ts +37 -7
  83. package/src/Permissions.ts +35 -8
  84. package/src/index.ts +12 -12
@@ -1,20 +1,45 @@
1
1
  /**
2
- * @since 1.0.0
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.
24
+ *
25
+ * @since 4.0.0
3
26
  */
4
27
  import * as Layer from "effect/Layer";
5
28
  import * as Socket from "effect/unstable/socket/Socket";
6
29
  /**
7
- * @since 1.0.0
30
+ * Creates a `Socket` layer connected to the given URL using the browser `WebSocket` constructor.
31
+ *
8
32
  * @category Layers
33
+ * @since 4.0.0
9
34
  */
10
35
  export declare const layerWebSocket: (url: string, options?: {
11
36
  readonly closeCodeIsError?: (code: number) => boolean;
12
37
  }) => Layer.Layer<Socket.Socket>;
13
38
  /**
14
- * A WebSocket constructor that uses `globalThis.WebSocket`.
39
+ * Layer that provides a `WebSocketConstructor` service backed by `globalThis.WebSocket`.
15
40
  *
16
- * @since 1.0.0
17
41
  * @category Layers
42
+ * @since 4.0.0
18
43
  */
19
44
  export declare const layerWebSocketConstructor: Layer.Layer<Socket.WebSocketConstructor>;
20
45
  //# sourceMappingURL=BrowserSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserSocket.d.ts","sourceRoot":"","sources":["../src/BrowserSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD;;;GAGG;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;;;;;;;;;;;;;;;;;;;;;;;;;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,18 +1,43 @@
1
1
  /**
2
- * @since 1.0.0
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.
24
+ *
25
+ * @since 4.0.0
3
26
  */
4
27
  import * as Layer from "effect/Layer";
5
28
  import * as Socket from "effect/unstable/socket/Socket";
6
29
  /**
7
- * @since 1.0.0
30
+ * Creates a `Socket` layer connected to the given URL using the browser `WebSocket` constructor.
31
+ *
8
32
  * @category Layers
33
+ * @since 4.0.0
9
34
  */
10
35
  export const layerWebSocket = (url, options) => Layer.effect(Socket.Socket, Socket.makeWebSocket(url, options)).pipe(Layer.provide(layerWebSocketConstructor));
11
36
  /**
12
- * A WebSocket constructor that uses `globalThis.WebSocket`.
37
+ * Layer that provides a `WebSocketConstructor` service backed by `globalThis.WebSocket`.
13
38
  *
14
- * @since 1.0.0
15
39
  * @category Layers
40
+ * @since 4.0.0
16
41
  */
17
42
  export const layerWebSocketConstructor = Socket.layerWebSocketConstructorGlobal;
18
43
  //# sourceMappingURL=BrowserSocket.js.map
@@ -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;;;AAGA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD;;;;AAIA,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;;;;;;;;;;;;;;;;;;;;;;;;;;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,5 +1,27 @@
1
1
  /**
2
- * @since 1.0.0
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.
23
+ *
24
+ * @since 4.0.0
3
25
  */
4
26
  import * as Stream from "effect/Stream";
5
27
  /**
@@ -8,8 +30,8 @@ import * as Stream from "effect/Stream";
8
30
  * By default, the underlying buffer is unbounded in size. You can customize the
9
31
  * buffer size an object as the second argument with the `bufferSize` field.
10
32
  *
11
- * @since 1.0.0
12
33
  * @category Streams
34
+ * @since 4.0.0
13
35
  */
14
36
  export declare const fromEventListenerWindow: <K extends keyof WindowEventMap>(type: K, options?: boolean | {
15
37
  readonly capture?: boolean;
@@ -23,8 +45,8 @@ export declare const fromEventListenerWindow: <K extends keyof WindowEventMap>(t
23
45
  * By default, the underlying buffer is unbounded in size. You can customize the
24
46
  * buffer size an object as the second argument with the `bufferSize` field.
25
47
  *
26
- * @since 1.0.0
27
48
  * @category Streams
49
+ * @since 4.0.0
28
50
  */
29
51
  export declare const fromEventListenerDocument: <K extends keyof DocumentEventMap>(type: K, options?: boolean | {
30
52
  readonly capture?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserStream.d.ts","sourceRoot":"","sources":["../src/BrowserStream.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;GAQG;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;;;;;;;;GAQG;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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;GAQG;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;;;;;;;;GAQG;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,5 +1,27 @@
1
1
  /**
2
- * @since 1.0.0
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.
23
+ *
24
+ * @since 4.0.0
3
25
  */
4
26
  import * as Stream from "effect/Stream";
5
27
  /**
@@ -8,8 +30,8 @@ import * as Stream from "effect/Stream";
8
30
  * By default, the underlying buffer is unbounded in size. You can customize the
9
31
  * buffer size an object as the second argument with the `bufferSize` field.
10
32
  *
11
- * @since 1.0.0
12
33
  * @category Streams
34
+ * @since 4.0.0
13
35
  */
14
36
  export const fromEventListenerWindow = (type, options) => Stream.fromEventListener(window, type, options);
15
37
  /**
@@ -18,8 +40,8 @@ export const fromEventListenerWindow = (type, options) => Stream.fromEventListen
18
40
  * By default, the underlying buffer is unbounded in size. You can customize the
19
41
  * buffer size an object as the second argument with the `bufferSize` field.
20
42
  *
21
- * @since 1.0.0
22
43
  * @category Streams
44
+ * @since 4.0.0
23
45
  */
24
46
  export const fromEventListenerDocument = (type, options) => Stream.fromEventListener(document, type, options);
25
47
  //# sourceMappingURL=BrowserStream.js.map
@@ -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;;;AAIA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;;;;;AASA,OAAO,MAAMC,uBAAuB,GAAGA,CACrCC,IAAO,EACPC,OAKa,KACsCH,MAAM,CAACI,iBAAiB,CAAoBC,MAAM,EAAEH,IAAI,EAAEC,OAAO,CAAC;AAEvH;;;;;;;;;AASA,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;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;;;;;AASA,OAAO,MAAMC,uBAAuB,GAAGA,CACrCC,IAAO,EACPC,OAKa,KACsCH,MAAM,CAACI,iBAAiB,CAAoBC,MAAM,EAAEH,IAAI,EAAEC,OAAO,CAAC;AAEvH;;;;;;;;;AASA,OAAO,MAAMG,yBAAyB,GAAGA,CACvCJ,IAAO,EACPC,OAKa,KAEbH,MAAM,CAACI,iBAAiB,CAAsBG,QAAQ,EAAEL,IAAI,EAAEC,OAAO,CAAC","ignoreList":[]}
@@ -1,13 +1,17 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import * as Worker from "effect/unstable/workers/Worker";
3
3
  /**
4
- * @since 1.0.0
4
+ * Creates browser worker layers by combining the default `WorkerPlatform` with a spawner for `Worker`, `SharedWorker`, or `MessagePort` instances.
5
+ *
5
6
  * @category Layers
7
+ * @since 4.0.0
6
8
  */
7
9
  export declare const layer: (spawn: (id: number) => Worker | SharedWorker | MessagePort) => Layer.Layer<Worker.WorkerPlatform | Worker.Spawner>;
8
10
  /**
9
- * @since 1.0.0
11
+ * Layer that provides the browser `WorkerPlatform` for `Worker`, `SharedWorker`, and `MessagePort` communication.
12
+ *
10
13
  * @category Layers
14
+ * @since 4.0.0
11
15
  */
12
16
  export declare const layerPlatform: Layer.Layer<Worker.WorkerPlatform>;
13
17
  //# sourceMappingURL=BrowserWorker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../src/BrowserWorker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAA;AAGxD;;;GAGG;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;;;GAGG;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":"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,5 +1,25 @@
1
1
  /**
2
- * @since 1.0.0
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
20
+ * terminating it.
21
+ *
22
+ * @since 4.0.0
3
23
  */
4
24
  import * as Deferred from "effect/Deferred";
5
25
  import * as Effect from "effect/Effect";
@@ -8,13 +28,17 @@ import * as Scope from "effect/Scope";
8
28
  import * as Worker from "effect/unstable/workers/Worker";
9
29
  import { WorkerError, WorkerReceiveError } from "effect/unstable/workers/WorkerError";
10
30
  /**
11
- * @since 1.0.0
31
+ * Creates browser worker layers by combining the default `WorkerPlatform` with a spawner for `Worker`, `SharedWorker`, or `MessagePort` instances.
32
+ *
12
33
  * @category Layers
34
+ * @since 4.0.0
13
35
  */
14
36
  export const layer = spawn => Layer.merge(layerPlatform, Worker.layerSpawner(spawn));
15
37
  /**
16
- * @since 1.0.0
38
+ * Layer that provides the browser `WorkerPlatform` for `Worker`, `SharedWorker`, and `MessagePort` communication.
39
+ *
17
40
  * @category Layers
41
+ * @since 4.0.0
18
42
  */
19
43
  export const layerPlatform = /*#__PURE__*/Layer.succeed(Worker.WorkerPlatform)(/*#__PURE__*/Worker.makePlatform()({
20
44
  setup({
@@ -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;;;AAGA,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;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,KAA0D,IAE1DN,KAAK,CAACO,KAAK,CACTC,aAAa,EACbN,MAAM,CAACO,YAAY,CAACH,KAAK,CAAC,CAC3B;AAEH;;;;AAIA,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;;;;;;;;;;;;;;;;;;;;;;;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,18 +1,24 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import * as WorkerRunner from "effect/unstable/workers/WorkerRunner";
3
3
  /**
4
- * @since 1.0.0
4
+ * Creates a `WorkerRunnerPlatform` service that runs worker handlers over a `MessagePort` or `Window`.
5
+ *
5
6
  * @category Constructors
7
+ * @since 4.0.0
6
8
  */
7
9
  export declare const make: (self: MessagePort | Window) => WorkerRunner.WorkerRunnerPlatform["Service"];
8
10
  /**
9
- * @since 1.0.0
11
+ * Layer that provides a browser `WorkerRunnerPlatform` using the global `self` worker context.
12
+ *
10
13
  * @category Layers
14
+ * @since 4.0.0
11
15
  */
12
16
  export declare const layer: Layer.Layer<WorkerRunner.WorkerRunnerPlatform>;
13
17
  /**
14
- * @since 1.0.0
18
+ * Layer that provides a `WorkerRunnerPlatform` using the supplied `MessagePort` or `Window`.
19
+ *
15
20
  * @category Layers
21
+ * @since 4.0.0
16
22
  */
17
23
  export declare const layerMessagePort: (port: MessagePort | Window) => Layer.Layer<WorkerRunner.WorkerRunnerPlatform>;
18
24
  //# sourceMappingURL=BrowserWorkerRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorkerRunner.d.ts","sourceRoot":"","sources":["../src/BrowserWorkerRunner.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AAUpE;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,WAAW,GAAG,MAAM,KAAG,YAAY,CAAC,oBAAoB,CAAC,SAAS,CA2H3F,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAEhE,CAAA;AAED;;;GAGG;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":"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,5 +1,23 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Browser runtime support for Effect worker runners.
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.
10
+ *
11
+ * Use it with `BrowserWorker` when a browser application needs to move RPC
12
+ * 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.
19
+ *
20
+ * @since 4.0.0
3
21
  */
4
22
  import * as Cause from "effect/Cause";
5
23
  import * as Deferred from "effect/Deferred";
@@ -20,8 +38,10 @@ if (typeof self !== "undefined" && "onconnect" in self) {
20
38
  self.onconnect = globalHandleConnect;
21
39
  }
22
40
  /**
23
- * @since 1.0.0
41
+ * Creates a `WorkerRunnerPlatform` service that runs worker handlers over a `MessagePort` or `Window`.
42
+ *
24
43
  * @category Constructors
44
+ * @since 4.0.0
25
45
  */
26
46
  export const make = self => ({
27
47
  start: Effect.fnUntraced(function* () {
@@ -131,13 +151,17 @@ export const make = self => ({
131
151
  })
132
152
  });
133
153
  /**
134
- * @since 1.0.0
154
+ * Layer that provides a browser `WorkerRunnerPlatform` using the global `self` worker context.
155
+ *
135
156
  * @category Layers
157
+ * @since 4.0.0
136
158
  */
137
159
  export const layer = /*#__PURE__*/Layer.sync(WorkerRunner.WorkerRunnerPlatform)(() => make(self));
138
160
  /**
139
- * @since 1.0.0
161
+ * Layer that provides a `WorkerRunnerPlatform` using the supplied `MessagePort` or `Window`.
162
+ *
140
163
  * @category Layers
164
+ * @since 4.0.0
141
165
  */
142
166
  export const layerMessagePort = port => Layer.succeed(WorkerRunner.WorkerRunnerPlatform)(make(port));
143
167
  //# sourceMappingURL=BrowserWorkerRunner.js.map
@@ -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":[]}
@@ -1,5 +1,21 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Browser clipboard service for Effect programs.
3
+ *
4
+ * This module wraps the browser `navigator.clipboard` API in a `Clipboard`
5
+ * service so client-side applications can read, write, and clear clipboard
6
+ * contents as typed Effects. It is useful for common UI workflows such as copy
7
+ * buttons, paste/import actions, sharing generated text, and moving rich
8
+ * clipboard payloads like `Blob`-backed `ClipboardItem`s through an Effect
9
+ * environment.
10
+ *
11
+ * Browser clipboard rules still apply. Clipboard access generally requires a
12
+ * secure context, and browsers may require a user gesture, permission prompt, or
13
+ * active focused document before reads or writes are allowed. Support also
14
+ * varies by operation and payload type: text helpers are the most portable,
15
+ * while `ClipboardItem` and non-text MIME types may be unavailable or restricted
16
+ * in some browsers. Failed browser operations are surfaced as `ClipboardError`.
17
+ *
18
+ * @since 4.0.0
3
19
  */
4
20
  import * as Context from "effect/Context";
5
21
  import * as Effect from "effect/Effect";
@@ -7,8 +23,10 @@ import * as Layer from "effect/Layer";
7
23
  declare const TypeId = "~@effect/platform-browser/Clipboard";
8
24
  declare const ErrorTypeId = "~@effect/platform-browser/Clipboard/ClipboardError";
9
25
  /**
10
- * @since 1.0.0
26
+ * Service interface for reading from, writing to, and clearing the browser clipboard.
27
+ *
11
28
  * @category Models
29
+ * @since 4.0.0
12
30
  */
13
31
  export interface Clipboard {
14
32
  readonly [TypeId]: typeof TypeId;
@@ -23,8 +41,10 @@ declare const ClipboardError_base: new <A extends Record<string, any> = {}>(args
23
41
  readonly _tag: "ClipboardError";
24
42
  } & Readonly<A>;
25
43
  /**
26
- * @since 1.0.0
44
+ * Tagged error raised when a browser clipboard operation fails.
45
+ *
27
46
  * @category Errors
47
+ * @since 4.0.0
28
48
  */
29
49
  export declare class ClipboardError extends ClipboardError_base<{
30
50
  readonly message: string;
@@ -33,20 +53,24 @@ export declare class ClipboardError extends ClipboardError_base<{
33
53
  readonly [ErrorTypeId] = "~@effect/platform-browser/Clipboard/ClipboardError";
34
54
  }
35
55
  /**
36
- * @since 1.0.0
56
+ * Service tag for the browser `Clipboard` service.
57
+ *
37
58
  * @category Service
59
+ * @since 4.0.0
38
60
  */
39
61
  export declare const Clipboard: Context.Service<Clipboard, Clipboard>;
40
62
  /**
41
- * @since 1.0.0
63
+ * Builds a `Clipboard` service from primitive read and write operations, deriving `clear` and `writeBlob` helpers.
64
+ *
42
65
  * @category Constructors
66
+ * @since 4.0.0
43
67
  */
44
68
  export declare const make: (impl: Omit<Clipboard, "clear" | "writeBlob" | typeof TypeId>) => Clipboard;
45
69
  /**
46
70
  * A layer that directly interfaces with the navigator.clipboard api
47
71
  *
48
- * @since 1.0.0
49
72
  * @category Layers
73
+ * @since 4.0.0
50
74
  */
51
75
  export declare const layer: Layer.Layer<Clipboard>;
52
76
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Clipboard.d.ts","sourceRoot":"","sources":["../src/Clipboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,QAAA,MAAM,MAAM,wCAAwC,CAAA;AACpD,QAAA,MAAM,WAAW,uDAAuD,CAAA;AAExE;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC1D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAC9E,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAC3E,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;CACpD;;;;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,QAAQ,CAAC,CAAC,WAAW,CAAC,wDAAc;CACrC;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAsC,CAAA;AAElG;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,MAAM,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,MAAM,CAAC,KAC3D,SAMC,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAsCxC,CAAA"}
1
+ {"version":3,"file":"Clipboard.d.ts","sourceRoot":"","sources":["../src/Clipboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,QAAA,MAAM,MAAM,wCAAwC,CAAA;AACpD,QAAA,MAAM,WAAW,uDAAuD,CAAA;AAExE;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC1D,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAC9E,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAC3E,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;CACpD;;;;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,QAAQ,CAAC,CAAC,WAAW,CAAC,wDAAc;CACrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAsC,CAAA;AAElG;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GACf,MAAM,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,MAAM,CAAC,KAC3D,SAMC,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAsCxC,CAAA"}
package/dist/Clipboard.js CHANGED
@@ -1,5 +1,21 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Browser clipboard service for Effect programs.
3
+ *
4
+ * This module wraps the browser `navigator.clipboard` API in a `Clipboard`
5
+ * service so client-side applications can read, write, and clear clipboard
6
+ * contents as typed Effects. It is useful for common UI workflows such as copy
7
+ * buttons, paste/import actions, sharing generated text, and moving rich
8
+ * clipboard payloads like `Blob`-backed `ClipboardItem`s through an Effect
9
+ * environment.
10
+ *
11
+ * Browser clipboard rules still apply. Clipboard access generally requires a
12
+ * secure context, and browsers may require a user gesture, permission prompt, or
13
+ * active focused document before reads or writes are allowed. Support also
14
+ * varies by operation and payload type: text helpers are the most portable,
15
+ * while `ClipboardItem` and non-text MIME types may be unavailable or restricted
16
+ * in some browsers. Failed browser operations are surfaced as `ClipboardError`.
17
+ *
18
+ * @since 4.0.0
3
19
  */
4
20
  import * as Context from "effect/Context";
5
21
  import * as Data from "effect/Data";
@@ -8,20 +24,26 @@ import * as Layer from "effect/Layer";
8
24
  const TypeId = "~@effect/platform-browser/Clipboard";
9
25
  const ErrorTypeId = "~@effect/platform-browser/Clipboard/ClipboardError";
10
26
  /**
11
- * @since 1.0.0
27
+ * Tagged error raised when a browser clipboard operation fails.
28
+ *
12
29
  * @category Errors
30
+ * @since 4.0.0
13
31
  */
14
32
  export class ClipboardError extends /*#__PURE__*/Data.TaggedError("ClipboardError") {
15
33
  [ErrorTypeId] = ErrorTypeId;
16
34
  }
17
35
  /**
18
- * @since 1.0.0
36
+ * Service tag for the browser `Clipboard` service.
37
+ *
19
38
  * @category Service
39
+ * @since 4.0.0
20
40
  */
21
41
  export const Clipboard = /*#__PURE__*/Context.Service(TypeId);
22
42
  /**
23
- * @since 1.0.0
43
+ * Builds a `Clipboard` service from primitive read and write operations, deriving `clear` and `writeBlob` helpers.
44
+ *
24
45
  * @category Constructors
46
+ * @since 4.0.0
25
47
  */
26
48
  export const make = impl => Clipboard.of({
27
49
  ...impl,
@@ -34,8 +56,8 @@ export const make = impl => Clipboard.of({
34
56
  /**
35
57
  * A layer that directly interfaces with the navigator.clipboard api
36
58
  *
37
- * @since 1.0.0
38
59
  * @category Layers
60
+ * @since 4.0.0
39
61
  */
40
62
  export const layer = /*#__PURE__*/Layer.succeed(Clipboard, /*#__PURE__*/make({
41
63
  read: /*#__PURE__*/Effect.tryPromise({
@@ -1 +1 @@
1
- {"version":3,"file":"Clipboard.js","names":["Context","Data","Effect","Layer","TypeId","ErrorTypeId","ClipboardError","TaggedError","Clipboard","Service","make","impl","of","clear","writeString","writeBlob","blob","write","ClipboardItem","type","layer","succeed","read","tryPromise","try","navigator","clipboard","catch","cause","s","readString","readText","text","writeText"],"sources":["../src/Clipboard.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,MAAM,GAAG,qCAAqC;AACpD,MAAMC,WAAW,GAAG,oDAAoD;AAgBxE;;;;AAIA,OAAM,MAAOC,cAAe,sBAAQL,IAAI,CAACM,WAAW,CAAC,gBAAgB,CAGnE;EACS,CAACF,WAAW,IAAIA,WAAW;;AAGtC;;;;AAIA,OAAO,MAAMG,SAAS,gBAA0CR,OAAO,CAACS,OAAO,CAAYL,MAAM,CAAC;AAElG;;;;AAIA,OAAO,MAAMM,IAAI,GACfC,IAA4D,IAE5DH,SAAS,CAACI,EAAE,CAAC;EACX,GAAGD,IAAI;EACP,CAACP,MAAM,GAAGA,MAAM;EAChBS,KAAK,EAAEF,IAAI,CAACG,WAAW,CAAC,EAAE,CAAC;EAC3BC,SAAS,EAAGC,IAAU,IAAKL,IAAI,CAACM,KAAK,CAAC,CAAC,IAAIC,aAAa,CAAC;IAAE,CAACF,IAAI,CAACG,IAAI,GAAGH;EAAI,CAAE,CAAC,CAAC;CACjF,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMI,KAAK,gBAA2BjB,KAAK,CAACkB,OAAO,CACxDb,SAAS,eACTE,IAAI,CAAC;EACHY,IAAI,eAAEpB,MAAM,CAACqB,UAAU,CAAC;IACtBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACJ,IAAI,EAAE;IACrCK,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ,CAAC;EACFX,KAAK,EAAGY,CAAuB,IAC7B3B,MAAM,CAACqB,UAAU,CAAC;IAChBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACT,KAAK,CAACY,CAAC,CAAC;IACvCF,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ,CAAC;EACJE,UAAU,eAAE5B,MAAM,CAACqB,UAAU,CAAC;IAC5BC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACK,QAAQ,EAAE;IACzCJ,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ,CAAC;EACFd,WAAW,EAAGkB,IAAY,IACxB9B,MAAM,CAACqB,UAAU,CAAC;IAChBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACO,SAAS,CAACD,IAAI,CAAC;IAC9CL,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ;CACJ,CAAC,CACH","ignoreList":[]}
1
+ {"version":3,"file":"Clipboard.js","names":["Context","Data","Effect","Layer","TypeId","ErrorTypeId","ClipboardError","TaggedError","Clipboard","Service","make","impl","of","clear","writeString","writeBlob","blob","write","ClipboardItem","type","layer","succeed","read","tryPromise","try","navigator","clipboard","catch","cause","s","readString","readText","text","writeText"],"sources":["../src/Clipboard.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;AAmBA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,MAAM,GAAG,qCAAqC;AACpD,MAAMC,WAAW,GAAG,oDAAoD;AAkBxE;;;;;;AAMA,OAAM,MAAOC,cAAe,sBAAQL,IAAI,CAACM,WAAW,CAAC,gBAAgB,CAGnE;EACS,CAACF,WAAW,IAAIA,WAAW;;AAGtC;;;;;;AAMA,OAAO,MAAMG,SAAS,gBAA0CR,OAAO,CAACS,OAAO,CAAYL,MAAM,CAAC;AAElG;;;;;;AAMA,OAAO,MAAMM,IAAI,GACfC,IAA4D,IAE5DH,SAAS,CAACI,EAAE,CAAC;EACX,GAAGD,IAAI;EACP,CAACP,MAAM,GAAGA,MAAM;EAChBS,KAAK,EAAEF,IAAI,CAACG,WAAW,CAAC,EAAE,CAAC;EAC3BC,SAAS,EAAGC,IAAU,IAAKL,IAAI,CAACM,KAAK,CAAC,CAAC,IAAIC,aAAa,CAAC;IAAE,CAACF,IAAI,CAACG,IAAI,GAAGH;EAAI,CAAE,CAAC,CAAC;CACjF,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMI,KAAK,gBAA2BjB,KAAK,CAACkB,OAAO,CACxDb,SAAS,eACTE,IAAI,CAAC;EACHY,IAAI,eAAEpB,MAAM,CAACqB,UAAU,CAAC;IACtBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACJ,IAAI,EAAE;IACrCK,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ,CAAC;EACFX,KAAK,EAAGY,CAAuB,IAC7B3B,MAAM,CAACqB,UAAU,CAAC;IAChBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACT,KAAK,CAACY,CAAC,CAAC;IACvCF,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ,CAAC;EACJE,UAAU,eAAE5B,MAAM,CAACqB,UAAU,CAAC;IAC5BC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACK,QAAQ,EAAE;IACzCJ,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ,CAAC;EACFd,WAAW,EAAGkB,IAAY,IACxB9B,MAAM,CAACqB,UAAU,CAAC;IAChBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,SAAS,CAACO,SAAS,CAACD,IAAI,CAAC;IAC9CL,KAAK,EAAGC,KAAK,IACX,IAAItB,cAAc,CAAC;MACjBsB,KAAK;MACL,SAAS,EAAE;KACZ;GACJ;CACJ,CAAC,CACH","ignoreList":[]}