@effect/platform-browser 4.0.0-beta.8 → 4.0.0-beta.81
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/dist/BrowserCrypto.d.ts +49 -0
- package/dist/BrowserCrypto.d.ts.map +1 -0
- package/dist/BrowserCrypto.js +87 -0
- package/dist/BrowserCrypto.js.map +1 -0
- package/dist/BrowserHttpClient.d.ts +48 -19
- package/dist/BrowserHttpClient.d.ts.map +1 -1
- package/dist/BrowserHttpClient.js +62 -21
- package/dist/BrowserHttpClient.js.map +1 -1
- package/dist/BrowserKeyValueStore.d.ts +37 -14
- package/dist/BrowserKeyValueStore.d.ts.map +1 -1
- package/dist/BrowserKeyValueStore.js +144 -10
- package/dist/BrowserKeyValueStore.js.map +1 -1
- package/dist/BrowserPersistence.d.ts +40 -0
- package/dist/BrowserPersistence.d.ts.map +1 -0
- package/dist/BrowserPersistence.js +207 -0
- package/dist/BrowserPersistence.js.map +1 -0
- package/dist/BrowserRuntime.d.ts +64 -4
- package/dist/BrowserRuntime.d.ts.map +1 -1
- package/dist/BrowserRuntime.js +19 -1
- package/dist/BrowserRuntime.js.map +1 -1
- package/dist/BrowserSocket.d.ts +33 -6
- package/dist/BrowserSocket.d.ts.map +1 -1
- package/dist/BrowserSocket.js +33 -6
- package/dist/BrowserSocket.js.map +1 -1
- package/dist/BrowserStream.d.ts +19 -7
- package/dist/BrowserStream.d.ts.map +1 -1
- package/dist/BrowserStream.js +19 -7
- package/dist/BrowserStream.js.map +1 -1
- package/dist/BrowserWorker.d.ts +25 -4
- package/dist/BrowserWorker.d.ts.map +1 -1
- package/dist/BrowserWorker.js +34 -6
- package/dist/BrowserWorker.js.map +1 -1
- package/dist/BrowserWorkerRunner.d.ts +31 -6
- package/dist/BrowserWorkerRunner.d.ts.map +1 -1
- package/dist/BrowserWorkerRunner.js +43 -10
- package/dist/BrowserWorkerRunner.js.map +1 -1
- package/dist/Clipboard.d.ts +59 -14
- package/dist/Clipboard.d.ts.map +1 -1
- package/dist/Clipboard.js +34 -12
- package/dist/Clipboard.js.map +1 -1
- package/dist/Geolocation.d.ts +80 -25
- package/dist/Geolocation.d.ts.map +1 -1
- package/dist/Geolocation.js +48 -17
- package/dist/Geolocation.js.map +1 -1
- package/dist/IndexedDb.d.ts +75 -0
- package/dist/IndexedDb.d.ts.map +1 -0
- package/dist/IndexedDb.js +85 -0
- package/dist/IndexedDb.js.map +1 -0
- package/dist/IndexedDbDatabase.d.ts +153 -0
- package/dist/IndexedDbDatabase.d.ts.map +1 -0
- package/dist/IndexedDbDatabase.js +327 -0
- package/dist/IndexedDbDatabase.js.map +1 -0
- package/dist/IndexedDbQueryBuilder.d.ts +422 -0
- package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
- package/dist/IndexedDbQueryBuilder.js +935 -0
- package/dist/IndexedDbQueryBuilder.js.map +1 -0
- package/dist/IndexedDbTable.d.ts +166 -0
- package/dist/IndexedDbTable.d.ts.map +1 -0
- package/dist/IndexedDbTable.js +71 -0
- package/dist/IndexedDbTable.js.map +1 -0
- package/dist/IndexedDbVersion.d.ts +99 -0
- package/dist/IndexedDbVersion.d.ts.map +1 -0
- package/dist/IndexedDbVersion.js +44 -0
- package/dist/IndexedDbVersion.js.map +1 -0
- package/dist/Permissions.d.ts +52 -16
- package/dist/Permissions.d.ts.map +1 -1
- package/dist/Permissions.js +42 -11
- package/dist/Permissions.js.map +1 -1
- package/dist/index.d.ts +38 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/BrowserCrypto.ts +97 -0
- package/src/BrowserHttpClient.ts +72 -27
- package/src/BrowserKeyValueStore.ts +160 -12
- package/src/BrowserPersistence.ts +334 -0
- package/src/BrowserRuntime.ts +64 -4
- package/src/BrowserSocket.ts +33 -6
- package/src/BrowserStream.ts +19 -7
- package/src/BrowserWorker.ts +34 -6
- package/src/BrowserWorkerRunner.ts +43 -10
- package/src/Clipboard.ts +56 -14
- package/src/Geolocation.ts +76 -21
- package/src/IndexedDb.ts +113 -0
- package/src/IndexedDbDatabase.ts +648 -0
- package/src/IndexedDbQueryBuilder.ts +2032 -0
- package/src/IndexedDbTable.ts +260 -0
- package/src/IndexedDbVersion.ts +138 -0
- package/src/Permissions.ts +47 -14
- package/src/index.ts +45 -10
package/dist/BrowserSocket.js
CHANGED
|
@@ -1,18 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Browser WebSocket layers for Effect sockets.
|
|
3
|
+
*
|
|
4
|
+
* `layerWebSocket` creates a `Socket.Socket` connected to a WebSocket URL using
|
|
5
|
+
* the browser `WebSocket` constructor. `layerWebSocketConstructor` provides
|
|
6
|
+
* only the browser-backed constructor service for lower-level socket code.
|
|
7
|
+
*
|
|
8
|
+
* @since 4.0.0
|
|
3
9
|
*/
|
|
4
10
|
import * as Layer from "effect/Layer";
|
|
5
11
|
import * as Socket from "effect/unstable/socket/Socket";
|
|
6
12
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
13
|
+
* Creates a `Socket` layer connected to the given URL using the browser `WebSocket` constructor.
|
|
14
|
+
*
|
|
15
|
+
* **When to use**
|
|
16
|
+
*
|
|
17
|
+
* Use when you need browser code to satisfy the platform socket service from a
|
|
18
|
+
* URL without wiring the browser constructor service separately.
|
|
19
|
+
*
|
|
20
|
+
* **Details**
|
|
21
|
+
*
|
|
22
|
+
* Delegates socket construction to `Socket.makeWebSocket` and provides the
|
|
23
|
+
* browser-backed `WebSocketConstructor` service.
|
|
24
|
+
*
|
|
25
|
+
* **Gotchas**
|
|
26
|
+
*
|
|
27
|
+
* Browser WebSocket rules still control URL schemes, mixed-content blocking,
|
|
28
|
+
* cookies, authentication, origin checks, subprotocols, and extensions. Close
|
|
29
|
+
* events are errors unless `closeCodeIsError` classifies the close code as
|
|
30
|
+
* clean.
|
|
31
|
+
*
|
|
32
|
+
* @see {@link layerWebSocketConstructor} for providing only the browser constructor service
|
|
33
|
+
*
|
|
34
|
+
* @category layers
|
|
35
|
+
* @since 4.0.0
|
|
9
36
|
*/
|
|
10
37
|
export const layerWebSocket = (url, options) => Layer.effect(Socket.Socket, Socket.makeWebSocket(url, options)).pipe(Layer.provide(layerWebSocketConstructor));
|
|
11
38
|
/**
|
|
12
|
-
*
|
|
39
|
+
* Layer that provides a `WebSocketConstructor` service backed by `globalThis.WebSocket`.
|
|
13
40
|
*
|
|
14
|
-
* @
|
|
15
|
-
* @
|
|
41
|
+
* @category layers
|
|
42
|
+
* @since 4.0.0
|
|
16
43
|
*/
|
|
17
44
|
export const layerWebSocketConstructor = Socket.layerWebSocketConstructorGlobal;
|
|
18
45
|
//# 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
|
|
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;;;;;;;;;AASA,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":[]}
|
package/dist/BrowserStream.d.ts
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Browser DOM event streams.
|
|
3
|
+
*
|
|
4
|
+
* This module provides typed constructors that turn `window.addEventListener`
|
|
5
|
+
* and `document.addEventListener` events into Effect `Stream` values. Both
|
|
6
|
+
* helpers accept the usual listener options and an optional stream buffer size.
|
|
7
|
+
*
|
|
8
|
+
* @since 4.0.0
|
|
3
9
|
*/
|
|
4
10
|
import * as Stream from "effect/Stream";
|
|
5
11
|
/**
|
|
6
12
|
* Creates a `Stream` from `window.addEventListener`.
|
|
7
13
|
*
|
|
14
|
+
* **Details**
|
|
15
|
+
*
|
|
8
16
|
* By default, the underlying buffer is unbounded in size. You can customize the
|
|
9
|
-
* buffer size an object as the second argument with the `bufferSize`
|
|
17
|
+
* buffer size by passing an object as the second argument with the `bufferSize`
|
|
18
|
+
* field.
|
|
10
19
|
*
|
|
11
|
-
* @
|
|
12
|
-
* @
|
|
20
|
+
* @category streams
|
|
21
|
+
* @since 4.0.0
|
|
13
22
|
*/
|
|
14
23
|
export declare const fromEventListenerWindow: <K extends keyof WindowEventMap>(type: K, options?: boolean | {
|
|
15
24
|
readonly capture?: boolean;
|
|
@@ -20,11 +29,14 @@ export declare const fromEventListenerWindow: <K extends keyof WindowEventMap>(t
|
|
|
20
29
|
/**
|
|
21
30
|
* Creates a `Stream` from `document.addEventListener`.
|
|
22
31
|
*
|
|
32
|
+
* **Details**
|
|
33
|
+
*
|
|
23
34
|
* By default, the underlying buffer is unbounded in size. You can customize the
|
|
24
|
-
* buffer size an object as the second argument with the `bufferSize`
|
|
35
|
+
* buffer size by passing an object as the second argument with the `bufferSize`
|
|
36
|
+
* field.
|
|
25
37
|
*
|
|
26
|
-
* @
|
|
27
|
-
* @
|
|
38
|
+
* @category streams
|
|
39
|
+
* @since 4.0.0
|
|
28
40
|
*/
|
|
29
41
|
export declare const fromEventListenerDocument: <K extends keyof DocumentEventMap>(type: K, options?: boolean | {
|
|
30
42
|
readonly capture?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserStream.d.ts","sourceRoot":"","sources":["../src/BrowserStream.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BrowserStream.d.ts","sourceRoot":"","sources":["../src/BrowserStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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"}
|
package/dist/BrowserStream.js
CHANGED
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Browser DOM event streams.
|
|
3
|
+
*
|
|
4
|
+
* This module provides typed constructors that turn `window.addEventListener`
|
|
5
|
+
* and `document.addEventListener` events into Effect `Stream` values. Both
|
|
6
|
+
* helpers accept the usual listener options and an optional stream buffer size.
|
|
7
|
+
*
|
|
8
|
+
* @since 4.0.0
|
|
3
9
|
*/
|
|
4
10
|
import * as Stream from "effect/Stream";
|
|
5
11
|
/**
|
|
6
12
|
* Creates a `Stream` from `window.addEventListener`.
|
|
7
13
|
*
|
|
14
|
+
* **Details**
|
|
15
|
+
*
|
|
8
16
|
* By default, the underlying buffer is unbounded in size. You can customize the
|
|
9
|
-
* buffer size an object as the second argument with the `bufferSize`
|
|
17
|
+
* buffer size by passing an object as the second argument with the `bufferSize`
|
|
18
|
+
* field.
|
|
10
19
|
*
|
|
11
|
-
* @
|
|
12
|
-
* @
|
|
20
|
+
* @category streams
|
|
21
|
+
* @since 4.0.0
|
|
13
22
|
*/
|
|
14
23
|
export const fromEventListenerWindow = (type, options) => Stream.fromEventListener(window, type, options);
|
|
15
24
|
/**
|
|
16
25
|
* Creates a `Stream` from `document.addEventListener`.
|
|
17
26
|
*
|
|
27
|
+
* **Details**
|
|
28
|
+
*
|
|
18
29
|
* By default, the underlying buffer is unbounded in size. You can customize the
|
|
19
|
-
* buffer size an object as the second argument with the `bufferSize`
|
|
30
|
+
* buffer size by passing an object as the second argument with the `bufferSize`
|
|
31
|
+
* field.
|
|
20
32
|
*
|
|
21
|
-
* @
|
|
22
|
-
* @
|
|
33
|
+
* @category streams
|
|
34
|
+
* @since 4.0.0
|
|
23
35
|
*/
|
|
24
36
|
export const fromEventListenerDocument = (type, options) => Stream.fromEventListener(document, type, options);
|
|
25
37
|
//# 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
|
|
1
|
+
{"version":3,"file":"BrowserStream.js","names":["Stream","fromEventListenerWindow","type","options","fromEventListener","window","fromEventListenerDocument","document"],"sources":["../src/BrowserStream.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;AAUA,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":[]}
|
package/dist/BrowserWorker.d.ts
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
import * as Layer from "effect/Layer";
|
|
2
2
|
import * as Worker from "effect/unstable/workers/Worker";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Creates browser worker layers by combining the default `WorkerPlatform` with a spawner for `Worker`, `SharedWorker`, or `MessagePort` instances.
|
|
5
|
+
*
|
|
6
|
+
* **When to use**
|
|
7
|
+
*
|
|
8
|
+
* Use when you need both the browser `WorkerPlatform` and a `Spawner` from one
|
|
9
|
+
* 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
|
+
*
|
|
23
|
+
* @category layers
|
|
24
|
+
* @since 4.0.0
|
|
6
25
|
*/
|
|
7
26
|
export declare const layer: (spawn: (id: number) => Worker | SharedWorker | MessagePort) => Layer.Layer<Worker.WorkerPlatform | Worker.Spawner>;
|
|
8
27
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
28
|
+
* Layer that provides the browser `WorkerPlatform` for `Worker`, `SharedWorker`, and `MessagePort` communication.
|
|
29
|
+
*
|
|
30
|
+
* @category layers
|
|
31
|
+
* @since 4.0.0
|
|
11
32
|
*/
|
|
12
33
|
export declare const layerPlatform: Layer.Layer<Worker.WorkerPlatform>;
|
|
13
34
|
//# sourceMappingURL=BrowserWorker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../src/BrowserWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../src/BrowserWorker.ts"],"names":[],"mappings":"AAYA,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"}
|
package/dist/BrowserWorker.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Parent-side browser platform for Effect workers.
|
|
3
|
+
*
|
|
4
|
+
* `layerPlatform` provides the `WorkerPlatform` used to communicate with a
|
|
5
|
+
* browser `Worker`, `SharedWorker`, or `MessagePort` through Effect's worker
|
|
6
|
+
* protocol. `layer` combines that platform with a `Spawner` built from a
|
|
7
|
+
* callback that creates or returns the worker endpoint for each worker id.
|
|
8
|
+
*
|
|
9
|
+
* @since 4.0.0
|
|
3
10
|
*/
|
|
4
11
|
import * as Deferred from "effect/Deferred";
|
|
5
12
|
import * as Effect from "effect/Effect";
|
|
@@ -8,13 +15,34 @@ import * as Scope from "effect/Scope";
|
|
|
8
15
|
import * as Worker from "effect/unstable/workers/Worker";
|
|
9
16
|
import { WorkerError, WorkerReceiveError } from "effect/unstable/workers/WorkerError";
|
|
10
17
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
18
|
+
* Creates browser worker layers by combining the default `WorkerPlatform` with a spawner for `Worker`, `SharedWorker`, or `MessagePort` instances.
|
|
19
|
+
*
|
|
20
|
+
* **When to use**
|
|
21
|
+
*
|
|
22
|
+
* Use when you need both the browser `WorkerPlatform` and a `Spawner` from one
|
|
23
|
+
* layer.
|
|
24
|
+
*
|
|
25
|
+
* **Details**
|
|
26
|
+
*
|
|
27
|
+
* The `spawn` callback receives the numeric worker id and may return a
|
|
28
|
+
* `Worker`, `SharedWorker`, or `MessagePort`.
|
|
29
|
+
*
|
|
30
|
+
* **Gotchas**
|
|
31
|
+
*
|
|
32
|
+
* Scope finalization sends the worker close protocol over the port. Dedicated
|
|
33
|
+
* workers created by `spawn` are not terminated by this layer.
|
|
34
|
+
*
|
|
35
|
+
* @see {@link layerPlatform} for providing only the browser worker platform
|
|
36
|
+
*
|
|
37
|
+
* @category layers
|
|
38
|
+
* @since 4.0.0
|
|
13
39
|
*/
|
|
14
40
|
export const layer = spawn => Layer.merge(layerPlatform, Worker.layerSpawner(spawn));
|
|
15
41
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
42
|
+
* Layer that provides the browser `WorkerPlatform` for `Worker`, `SharedWorker`, and `MessagePort` communication.
|
|
43
|
+
*
|
|
44
|
+
* @category layers
|
|
45
|
+
* @since 4.0.0
|
|
18
46
|
*/
|
|
19
47
|
export const layerPlatform = /*#__PURE__*/Layer.succeed(Worker.WorkerPlatform)(/*#__PURE__*/Worker.makePlatform()({
|
|
20
48
|
setup({
|
|
@@ -41,7 +69,7 @@ export const layerPlatform = /*#__PURE__*/Layer.succeed(Worker.WorkerPlatform)(/
|
|
|
41
69
|
message: "An error event was emitter",
|
|
42
70
|
cause: event.error ?? event.message
|
|
43
71
|
})
|
|
44
|
-
})
|
|
72
|
+
}));
|
|
45
73
|
}
|
|
46
74
|
port.addEventListener("message", onMessage);
|
|
47
75
|
port.addEventListener("error", onError);
|
|
@@ -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","
|
|
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;;;;;;;;;;AAUA,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":[]}
|
|
@@ -1,18 +1,43 @@
|
|
|
1
1
|
import * as Layer from "effect/Layer";
|
|
2
2
|
import * as WorkerRunner from "effect/unstable/workers/WorkerRunner";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Creates a `WorkerRunnerPlatform` service that runs worker handlers over a `MessagePort` or `Window`.
|
|
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
|
-
*
|
|
10
|
-
*
|
|
11
|
+
* Layer that provides a browser `WorkerRunnerPlatform` using the global `self` worker context.
|
|
12
|
+
*
|
|
13
|
+
* **When to use**
|
|
14
|
+
*
|
|
15
|
+
* Use when you need a browser worker entry point to use the ambient `self`
|
|
16
|
+
* object as the 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
|
+
*
|
|
32
|
+
* @category layers
|
|
33
|
+
* @since 4.0.0
|
|
11
34
|
*/
|
|
12
35
|
export declare const layer: Layer.Layer<WorkerRunner.WorkerRunnerPlatform>;
|
|
13
36
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
37
|
+
* Layer that provides a `WorkerRunnerPlatform` using the supplied `MessagePort` or `Window`.
|
|
38
|
+
*
|
|
39
|
+
* @category layers
|
|
40
|
+
* @since 4.0.0
|
|
16
41
|
*/
|
|
17
42
|
export declare const layerMessagePort: (port: MessagePort | Window) => Layer.Layer<WorkerRunner.WorkerRunnerPlatform>;
|
|
18
43
|
//# sourceMappingURL=BrowserWorkerRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserWorkerRunner.d.ts","sourceRoot":"","sources":["../src/BrowserWorkerRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BrowserWorkerRunner.d.ts","sourceRoot":"","sources":["../src/BrowserWorkerRunner.ts"],"names":[],"mappings":"AAiBA,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,5 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Runner-side browser platform for Effect worker handlers.
|
|
3
|
+
*
|
|
4
|
+
* `make` builds a `WorkerRunnerPlatform` over a `MessagePort` or `Window`.
|
|
5
|
+
* `layer` provides the platform from the global worker `self`, and
|
|
6
|
+
* `layerMessagePort` provides it from an explicit endpoint. The platform
|
|
7
|
+
* receives parent or client messages, runs Effect handlers, and posts responses
|
|
8
|
+
* back through the browser messaging channel.
|
|
9
|
+
*
|
|
10
|
+
* @since 4.0.0
|
|
3
11
|
*/
|
|
4
12
|
import * as Cause from "effect/Cause";
|
|
5
13
|
import * as Deferred from "effect/Deferred";
|
|
@@ -20,8 +28,10 @@ if (typeof self !== "undefined" && "onconnect" in self) {
|
|
|
20
28
|
self.onconnect = globalHandleConnect;
|
|
21
29
|
}
|
|
22
30
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
31
|
+
* Creates a `WorkerRunnerPlatform` service that runs worker handlers over a `MessagePort` or `Window`.
|
|
32
|
+
*
|
|
33
|
+
* @category constructors
|
|
34
|
+
* @since 4.0.0
|
|
25
35
|
*/
|
|
26
36
|
export const make = self => ({
|
|
27
37
|
start: Effect.fnUntraced(function* () {
|
|
@@ -35,7 +45,7 @@ export const make = self => ({
|
|
|
35
45
|
const run = handler => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
|
|
36
46
|
const closeLatch = Deferred.makeUnsafe();
|
|
37
47
|
const trackFiber = Fiber.runIn(scope);
|
|
38
|
-
const services = yield* Effect.
|
|
48
|
+
const services = yield* Effect.context();
|
|
39
49
|
const runFork = Effect.runForkWith(services);
|
|
40
50
|
const onExit = exit => {
|
|
41
51
|
if (exit._tag === "Failure" && !Cause.hasInterruptsOnly(exit.cause)) {
|
|
@@ -71,7 +81,7 @@ export const make = self => ({
|
|
|
71
81
|
message: "An messageerror event was emitted",
|
|
72
82
|
cause: error.data
|
|
73
83
|
})
|
|
74
|
-
})
|
|
84
|
+
}));
|
|
75
85
|
}
|
|
76
86
|
function onError(error) {
|
|
77
87
|
Deferred.doneUnsafe(closeLatch, new WorkerError({
|
|
@@ -79,7 +89,7 @@ export const make = self => ({
|
|
|
79
89
|
message: "An error event was emitted",
|
|
80
90
|
cause: error.data
|
|
81
91
|
})
|
|
82
|
-
})
|
|
92
|
+
}));
|
|
83
93
|
}
|
|
84
94
|
function handlePort(port) {
|
|
85
95
|
const portScope = Scope.forkUnsafe(scope);
|
|
@@ -131,13 +141,36 @@ export const make = self => ({
|
|
|
131
141
|
})
|
|
132
142
|
});
|
|
133
143
|
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
144
|
+
* Layer that provides a browser `WorkerRunnerPlatform` using the global `self` worker context.
|
|
145
|
+
*
|
|
146
|
+
* **When to use**
|
|
147
|
+
*
|
|
148
|
+
* Use when you need a browser worker entry point to use the ambient `self`
|
|
149
|
+
* object as the worker transport.
|
|
150
|
+
*
|
|
151
|
+
* **Details**
|
|
152
|
+
*
|
|
153
|
+
* Delegates to `make(self)` and provides the runner-side platform used by
|
|
154
|
+
* protocols such as `RpcServer.layerProtocolWorkerRunner`.
|
|
155
|
+
*
|
|
156
|
+
* **Gotchas**
|
|
157
|
+
*
|
|
158
|
+
* This layer depends on the browser worker global `self`. Use
|
|
159
|
+
* `layerMessagePort` when the transport is an explicit `MessagePort` or
|
|
160
|
+
* `Window`.
|
|
161
|
+
*
|
|
162
|
+
* @see {@link make} for constructing a runner platform from an explicit endpoint
|
|
163
|
+
* @see {@link layerMessagePort} for providing a platform from an explicit endpoint
|
|
164
|
+
*
|
|
165
|
+
* @category layers
|
|
166
|
+
* @since 4.0.0
|
|
136
167
|
*/
|
|
137
168
|
export const layer = /*#__PURE__*/Layer.sync(WorkerRunner.WorkerRunnerPlatform)(() => make(self));
|
|
138
169
|
/**
|
|
139
|
-
*
|
|
140
|
-
*
|
|
170
|
+
* Layer that provides a `WorkerRunnerPlatform` using the supplied `MessagePort` or `Window`.
|
|
171
|
+
*
|
|
172
|
+
* @category layers
|
|
173
|
+
* @since 4.0.0
|
|
141
174
|
*/
|
|
142
175
|
export const layerMessagePort = port => Layer.succeed(WorkerRunner.WorkerRunnerPlatform)(make(port));
|
|
143
176
|
//# 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","runFork","runForkWith","onExit","exit","_tag","hasInterruptsOnly","cause","logError","onMessage","data","result","isEffect","fiber","addObserver","port","size","doneUnsafe","void","delete","close","onMessageError","error","reason","
|
|
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":"AAAA;;;;;;;;;;;AAWA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,qCAAqC;AACrF,OAAO,KAAKC,YAAY,MAAM,sCAAsC;AAEpE,MAAMC,WAAW,gBAAG,IAAIC,GAAG,EAAe;AAC1C,SAASC,mBAAmBA,CAACC,KAAmB;EAC9CH,WAAW,CAACI,GAAG,CAAED,KAAsB,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD;AACA,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAI,WAAW,IAAIA,IAAI,EAAE;EACtDA,IAAI,CAACC,SAAS,GAAGL,mBAAmB;AACtC;AAEA;;;;;;AAMA,OAAO,MAAMM,IAAI,GAAIF,IAA0B,KAAoD;EACjGG,KAAK,EAAEnB,MAAM,CAACoB,UAAU,CAAC,aAAS;IAChC,MAAMC,WAAW,GAAG,OAAOhB,KAAK,CAACa,IAAI,EAAU;IAC/C,IAAII,aAAa,GAAG,CAAC;IAErB,MAAMP,KAAK,GAAG,IAAIQ,GAAG,EAAmD;IACxE,MAAMC,UAAU,GAAGA,CAACC,MAAc,EAAEC,OAAU,EAAEC,QAAiC,KAC/E,CAACZ,KAAK,CAACa,GAAG,CAACH,MAAM,CAAC,GAAG,CAAC,CAAC,IAAIT,IAAI,EAAEa,WAAW,CAAC,CAAC,CAAC,EAAEH,OAAO,CAAC,EAAE;MACzDC,QAAQ,EAAEA;KACX,CAAC;IACJ,MAAMG,IAAI,GAAGA,CAACL,MAAc,EAAEC,OAAU,EAAEC,QAAiC,KACzE3B,MAAM,CAAC+B,IAAI,CAAC,MAAMP,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAC,CAAC;IAE1D,MAAMK,GAAG,GACPC,OAAsE,IAEtEjC,MAAM,CAACkC,UAAU,CAAClC,MAAM,CAACoB,UAAU,CAAC,WAAUe,KAAK;MACjD,MAAMC,UAAU,GAAGrC,QAAQ,CAACsC,UAAU,EAAqB;MAC3D,MAAMC,UAAU,GAAGpC,KAAK,CAACqC,KAAK,CAACJ,KAAK,CAAC;MACrC,MAAMK,QAAQ,GAAG,OAAOxC,MAAM,CAACyC,OAAO,EAAK;MAC3C,MAAMC,OAAO,GAAG1C,MAAM,CAAC2C,WAAW,CAACH,QAAQ,CAAC;MAC5C,MAAMI,MAAM,GAAIC,IAAuB,IAAI;QACzC,IAAIA,IAAI,CAACC,IAAI,KAAK,SAAS,IAAI,CAAChD,KAAK,CAACiD,iBAAiB,CAACF,IAAI,CAACG,KAAK,CAAC,EAAE;UACnEN,OAAO,CAAC1C,MAAM,CAACiD,QAAQ,CAAC,2BAA2B,EAAEJ,IAAI,CAACG,KAAK,CAAC,CAAC;QACnE;MACF,CAAC;MAED,SAASE,SAASA,CAACzB,MAAc;QAC/B,OAAO,UAASZ,KAAmB;UACjC,MAAMa,OAAO,GAAGb,KAAK,CAACsC,IAAuC;UAC7D,IAAIzB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM0B,MAAM,GAAGnB,OAAO,CAACR,MAAM,EAAEC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI1B,MAAM,CAACqD,QAAQ,CAACD,MAAM,CAAC,EAAE;cAC3B,MAAME,KAAK,GAAGZ,OAAO,CAACU,MAAM,CAAC;cAC7BE,KAAK,CAACC,WAAW,CAACX,MAAM,CAAC;cACzBN,UAAU,CAACgB,KAAK,CAAC;YACnB;UACF,CAAC,MAAM;YACL,MAAME,IAAI,GAAGzC,KAAK,CAACa,GAAG,CAACH,MAAM,CAAC;YAC9B,IAAI,CAAC+B,IAAI,EAAE;cACT;YACF,CAAC,MAAM,IAAIzC,KAAK,CAAC0C,IAAI,KAAK,CAAC,EAAE;cAC3B;cACA,OAAO1D,QAAQ,CAAC2D,UAAU,CAACtB,UAAU,EAAEnC,IAAI,CAAC0D,IAAI,CAAC;YACnD;YACA5C,KAAK,CAAC6C,MAAM,CAACnC,MAAM,CAAC;YACpBzB,MAAM,CAAC0C,OAAO,CAACpC,KAAK,CAACuD,KAAK,CAACL,IAAI,CAAC,CAAC,CAAC,EAAEvD,IAAI,CAAC0D,IAAI,CAAC,CAAC;UACjD;QACF,CAAC;MACH;MACA,SAASG,cAAcA,CAACC,KAAmB;QACzChE,QAAQ,CAAC2D,UAAU,CACjBtB,UAAU,EACV,IAAI7B,WAAW,CAAC;UACdyD,MAAM,EAAE,IAAIxD,kBAAkB,CAAC;YAC7BkB,OAAO,EAAE,mCAAmC;YAC5CsB,KAAK,EAAEe,KAAK,CAACZ;WACd;SACF,CAAC,CACH;MACH;MACA,SAASc,OAAOA,CAACF,KAAU;QACzBhE,QAAQ,CAAC2D,UAAU,CACjBtB,UAAU,EACV,IAAI7B,WAAW,CAAC;UACdyD,MAAM,EAAE,IAAIxD,kBAAkB,CAAC;YAC7BkB,OAAO,EAAE,4BAA4B;YACrCsB,KAAK,EAAEe,KAAK,CAACZ;WACd;SACF,CAAC,CACH;MACH;MACA,SAASe,UAAUA,CAACV,IAAiB;QACnC,MAAMW,SAAS,GAAG7D,KAAK,CAAC8D,UAAU,CAACjC,KAAK,CAAC;QACzC,MAAMV,MAAM,GAAGH,aAAa,EAAE;QAC9BP,KAAK,CAACsD,GAAG,CAAC5C,MAAM,EAAE,CAAC+B,IAAI,EAAEW,SAAS,CAAC,CAAC;QACpC,MAAMG,KAAK,GAAGpB,SAAS,CAACzB,MAAM,CAAC;QAC/B+B,IAAI,CAACe,gBAAgB,CAAC,SAAS,EAAED,KAAK,CAAC;QACvCd,IAAI,CAACe,gBAAgB,CAAC,cAAc,EAAET,cAAc,CAAC;QACrD,IAAI,OAAO,IAAIN,IAAI,EAAE;UACnBA,IAAI,CAACrC,KAAK,EAAE;QACd;QACAqC,IAAI,CAAC3B,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB7B,MAAM,CAACwE,OAAO,CAAClE,KAAK,CAACmE,YAAY,CAC/BN,SAAS,EACTnE,MAAM,CAAC+B,IAAI,CAAC,MAAK;UACfyB,IAAI,CAACkB,mBAAmB,CAAC,SAAS,EAAEJ,KAAK,CAAC;UAC1Cd,IAAI,CAACkB,mBAAmB,CAAC,cAAc,EAAET,OAAO,CAAC;UACjDT,IAAI,CAACK,KAAK,EAAE;QACd,CAAC,CAAC,CACH,CAAC;MACJ;MACA7C,IAAI,CAACuD,gBAAgB,CAAC,OAAO,EAAEN,OAAO,CAAC;MACvC,IAAIU,aAAkC;MACtC,IAAI,WAAW,IAAI3D,IAAI,EAAE;QACvB2D,aAAa,GAAG3D,IAAI,CAACC,SAAS;QAC9BD,IAAI,CAACC,SAAS,GAAG,UAASJ,KAAmB;UAC3C,MAAM2C,IAAI,GAAI3C,KAAsB,CAACE,KAAK,CAAC,CAAC,CAAC;UAC7CmD,UAAU,CAACV,IAAI,CAAC;QAClB,CAAC;QACD,KAAK,MAAMA,IAAI,IAAI9C,WAAW,EAAE;UAC9BwD,UAAU,CAACV,IAAI,CAAC;QAClB;QACA9C,WAAW,CAACkE,KAAK,EAAE;MACrB,CAAC,MAAM;QACLV,UAAU,CAAClD,IAAW,CAAC;MACzB;MACA,OAAOV,KAAK,CAACmE,YAAY,CACvBtC,KAAK,EACLnC,MAAM,CAAC+B,IAAI,CAAC,MAAK;QACff,IAAI,CAAC0D,mBAAmB,CAAC,OAAO,EAAET,OAAO,CAAC;QAC1C,IAAI,WAAW,IAAIjD,IAAI,EAAE;UACvBA,IAAI,CAAC6C,KAAK,EAAE;UACZ7C,IAAI,CAACC,SAAS,GAAG0D,aAAa;QAChC;MACF,CAAC,CAAC,CACH;MAED,OAAO5E,QAAQ,CAAC8E,KAAK,CAACzC,UAAU,CAAC;IACnC,CAAC,CAAC,CAAC;IAEL,OAAOjC,QAAQ,CAAkC;MAAE6B,GAAG;MAAEF,IAAI;MAAEN,UAAU;MAAEH;IAAW,CAAE,CAAC;EAC1F,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMyD,KAAK,gBAAmD1E,KAAK,CAAC2B,IAAI,CAACtB,YAAY,CAACsE,oBAAoB,CAAC,CAAC,MACjH7D,IAAI,CAACF,IAAI,CAAC,CACX;AAED;;;;;;AAMA,OAAO,MAAMgE,gBAAgB,GAAIxB,IAA0B,IACzDpD,KAAK,CAAC6E,OAAO,CAACxE,YAAY,CAACsE,oBAAoB,CAAC,CAAC7D,IAAI,CAACsC,IAAI,CAAC,CAAC","ignoreList":[]}
|
package/dist/Clipboard.d.ts
CHANGED
|
@@ -1,11 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser clipboard integration for Effect programs.
|
|
3
|
+
*
|
|
4
|
+
* This module defines the `Clipboard` service, the `ClipboardError` raised by
|
|
5
|
+
* failed browser operations, a `make` constructor for custom implementations,
|
|
6
|
+
* and a browser-backed `layer` that uses `navigator.clipboard`. The service
|
|
7
|
+
* supports reading and writing text, reading and writing `ClipboardItem`
|
|
8
|
+
* payloads, writing one `Blob`, and clearing the clipboard.
|
|
9
|
+
*
|
|
10
|
+
* @since 4.0.0
|
|
11
|
+
*/
|
|
12
|
+
import * as Context from "effect/Context";
|
|
1
13
|
import * as Effect from "effect/Effect";
|
|
2
14
|
import * as Layer from "effect/Layer";
|
|
3
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
4
15
|
declare const TypeId = "~@effect/platform-browser/Clipboard";
|
|
5
16
|
declare const ErrorTypeId = "~@effect/platform-browser/Clipboard/ClipboardError";
|
|
6
17
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
18
|
+
* Defines the service interface for reading from, writing to, and clearing the browser clipboard.
|
|
19
|
+
*
|
|
20
|
+
* **When to use**
|
|
21
|
+
*
|
|
22
|
+
* Use when an application needs clipboard operations through an Effect service
|
|
23
|
+
* so browser failures stay in the error channel.
|
|
24
|
+
*
|
|
25
|
+
* **Details**
|
|
26
|
+
*
|
|
27
|
+
* `read` and `write` work with `ClipboardItem` arrays. `readString` and
|
|
28
|
+
* `writeString` use text, `writeBlob` writes one `Blob`, and `clear` writes an
|
|
29
|
+
* empty string.
|
|
30
|
+
*
|
|
31
|
+
* **Gotchas**
|
|
32
|
+
*
|
|
33
|
+
* Clipboard access generally requires a secure context and may require user
|
|
34
|
+
* activation, permissions, or a focused document. `ClipboardItem` and non-text
|
|
35
|
+
* MIME type support varies by browser. Failed browser operations are surfaced
|
|
36
|
+
* as `ClipboardError`.
|
|
37
|
+
*
|
|
38
|
+
* @category models
|
|
39
|
+
* @since 4.0.0
|
|
9
40
|
*/
|
|
10
41
|
export interface Clipboard {
|
|
11
42
|
readonly [TypeId]: typeof TypeId;
|
|
@@ -16,12 +47,14 @@ export interface Clipboard {
|
|
|
16
47
|
readonly writeBlob: (blob: Blob) => Effect.Effect<void, ClipboardError>;
|
|
17
48
|
readonly clear: Effect.Effect<void, ClipboardError>;
|
|
18
49
|
}
|
|
19
|
-
declare const ClipboardError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").
|
|
50
|
+
declare const ClipboardError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
20
51
|
readonly _tag: "ClipboardError";
|
|
21
52
|
} & Readonly<A>;
|
|
22
53
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
54
|
+
* Tagged error raised when a browser clipboard operation fails.
|
|
55
|
+
*
|
|
56
|
+
* @category errors
|
|
57
|
+
* @since 4.0.0
|
|
25
58
|
*/
|
|
26
59
|
export declare class ClipboardError extends ClipboardError_base<{
|
|
27
60
|
readonly message: string;
|
|
@@ -30,20 +63,32 @@ export declare class ClipboardError extends ClipboardError_base<{
|
|
|
30
63
|
readonly [ErrorTypeId] = "~@effect/platform-browser/Clipboard/ClipboardError";
|
|
31
64
|
}
|
|
32
65
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
66
|
+
* Service tag for browser clipboard capabilities.
|
|
67
|
+
*
|
|
68
|
+
* **When to use**
|
|
69
|
+
*
|
|
70
|
+
* Use when you need to require or provide clipboard capabilities through
|
|
71
|
+
* Effect's context.
|
|
72
|
+
*
|
|
73
|
+
* @see {@link make} for building a custom clipboard service
|
|
74
|
+
* @see {@link layer} for providing the browser-backed clipboard service
|
|
75
|
+
*
|
|
76
|
+
* @category services
|
|
77
|
+
* @since 4.0.0
|
|
35
78
|
*/
|
|
36
|
-
export declare const Clipboard:
|
|
79
|
+
export declare const Clipboard: Context.Service<Clipboard, Clipboard>;
|
|
37
80
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
81
|
+
* Builds a `Clipboard` service from primitive read and write operations, deriving `clear` and `writeBlob` helpers.
|
|
82
|
+
*
|
|
83
|
+
* @category constructors
|
|
84
|
+
* @since 4.0.0
|
|
40
85
|
*/
|
|
41
86
|
export declare const make: (impl: Omit<Clipboard, "clear" | "writeBlob" | typeof TypeId>) => Clipboard;
|
|
42
87
|
/**
|
|
43
|
-
*
|
|
88
|
+
* Layer that directly interfaces with the browser Clipboard API.
|
|
44
89
|
*
|
|
45
|
-
* @
|
|
46
|
-
* @
|
|
90
|
+
* @category layers
|
|
91
|
+
* @since 4.0.0
|
|
47
92
|
*/
|
|
48
93
|
export declare const layer: Layer.Layer<Clipboard>;
|
|
49
94
|
export {};
|
package/dist/Clipboard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clipboard.d.ts","sourceRoot":"","sources":["../src/Clipboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Clipboard.d.ts","sourceRoot":"","sources":["../src/Clipboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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;;;;;;;;;;;;;GAaG;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"}
|