@effect/platform-browser 0.73.0 → 4.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -6
- package/dist/BrowserHttpClient.d.ts +49 -0
- package/dist/BrowserHttpClient.d.ts.map +1 -0
- package/dist/{esm/internal/httpClient.js → BrowserHttpClient.js} +98 -60
- package/dist/BrowserHttpClient.js.map +1 -0
- package/dist/BrowserKeyValueStore.d.ts +24 -0
- package/dist/BrowserKeyValueStore.d.ts.map +1 -0
- package/dist/BrowserKeyValueStore.js +20 -0
- package/dist/BrowserKeyValueStore.js.map +1 -0
- package/dist/BrowserRuntime.d.ts +28 -0
- package/dist/BrowserRuntime.d.ts.map +1 -0
- package/dist/BrowserRuntime.js +13 -0
- package/dist/BrowserRuntime.js.map +1 -0
- package/dist/{dts/BrowserSocket.d.ts → BrowserSocket.d.ts} +4 -4
- package/dist/BrowserSocket.d.ts.map +1 -0
- package/dist/{esm/BrowserSocket.js → BrowserSocket.js} +5 -5
- package/dist/BrowserSocket.js.map +1 -0
- package/dist/BrowserStream.d.ts +35 -0
- package/dist/BrowserStream.d.ts.map +1 -0
- package/dist/BrowserStream.js +25 -0
- package/dist/BrowserStream.js.map +1 -0
- package/dist/BrowserWorker.d.ts +13 -0
- package/dist/BrowserWorker.d.ts.map +1 -0
- package/dist/{esm/internal/worker.js → BrowserWorker.js} +23 -17
- package/dist/BrowserWorker.js.map +1 -0
- package/dist/BrowserWorkerRunner.d.ts +18 -0
- package/dist/BrowserWorkerRunner.d.ts.map +1 -0
- package/dist/BrowserWorkerRunner.js +143 -0
- package/dist/BrowserWorkerRunner.js.map +1 -0
- package/dist/{dts/Clipboard.d.ts → Clipboard.d.ts} +13 -30
- package/dist/Clipboard.d.ts.map +1 -0
- package/dist/{esm/Clipboard.js → Clipboard.js} +12 -18
- package/dist/Clipboard.js.map +1 -0
- package/dist/Geolocation.d.ts +97 -0
- package/dist/Geolocation.d.ts.map +1 -0
- package/dist/Geolocation.js +99 -0
- package/dist/Geolocation.js.map +1 -0
- package/dist/Permissions.d.ts +80 -0
- package/dist/Permissions.d.ts.map +1 -0
- package/dist/Permissions.js +70 -0
- package/dist/Permissions.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{esm/index.js → index.js} +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +51 -111
- package/src/BrowserHttpClient.ts +364 -16
- package/src/BrowserKeyValueStore.ts +15 -8
- package/src/BrowserRuntime.ts +30 -4
- package/src/BrowserSocket.ts +5 -5
- package/src/BrowserStream.ts +20 -10
- package/src/BrowserWorker.ts +58 -21
- package/src/BrowserWorkerRunner.ts +151 -18
- package/src/Clipboard.ts +16 -38
- package/src/Geolocation.ts +80 -40
- package/src/Permissions.ts +49 -34
- package/src/index.ts +16 -10
- package/BrowserHttpClient/package.json +0 -6
- package/BrowserKeyValueStore/package.json +0 -6
- package/BrowserRuntime/package.json +0 -6
- package/BrowserSocket/package.json +0 -6
- package/BrowserStream/package.json +0 -6
- package/BrowserWorker/package.json +0 -6
- package/BrowserWorkerRunner/package.json +0 -6
- package/Clipboard/package.json +0 -6
- package/Geolocation/package.json +0 -6
- package/Permissions/package.json +0 -6
- package/dist/cjs/BrowserHttpClient.js +0 -31
- package/dist/cjs/BrowserHttpClient.js.map +0 -1
- package/dist/cjs/BrowserKeyValueStore.js +0 -23
- package/dist/cjs/BrowserKeyValueStore.js.map +0 -1
- package/dist/cjs/BrowserRuntime.js +0 -14
- package/dist/cjs/BrowserRuntime.js.map +0 -1
- package/dist/cjs/BrowserSocket.js +0 -27
- package/dist/cjs/BrowserSocket.js.map +0 -1
- package/dist/cjs/BrowserStream.js +0 -23
- package/dist/cjs/BrowserStream.js.map +0 -1
- package/dist/cjs/BrowserWorker.js +0 -29
- package/dist/cjs/BrowserWorker.js.map +0 -1
- package/dist/cjs/BrowserWorkerRunner.js +0 -31
- package/dist/cjs/BrowserWorkerRunner.js.map +0 -1
- package/dist/cjs/Clipboard.js +0 -86
- package/dist/cjs/Clipboard.js.map +0 -1
- package/dist/cjs/Geolocation.js +0 -73
- package/dist/cjs/Geolocation.js.map +0 -1
- package/dist/cjs/Permissions.js +0 -59
- package/dist/cjs/Permissions.js.map +0 -1
- package/dist/cjs/index.js +0 -28
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/internal/httpClient.js +0 -266
- package/dist/cjs/internal/httpClient.js.map +0 -1
- package/dist/cjs/internal/keyValueStore.js +0 -13
- package/dist/cjs/internal/keyValueStore.js.map +0 -1
- package/dist/cjs/internal/runtime.js +0 -16
- package/dist/cjs/internal/runtime.js.map +0 -1
- package/dist/cjs/internal/stream.js +0 -19
- package/dist/cjs/internal/stream.js.map +0 -1
- package/dist/cjs/internal/worker.js +0 -60
- package/dist/cjs/internal/worker.js.map +0 -1
- package/dist/cjs/internal/workerRunner.js +0 -144
- package/dist/cjs/internal/workerRunner.js.map +0 -1
- package/dist/dts/BrowserHttpClient.d.ts +0 -33
- package/dist/dts/BrowserHttpClient.d.ts.map +0 -1
- package/dist/dts/BrowserKeyValueStore.d.ts +0 -20
- package/dist/dts/BrowserKeyValueStore.d.ts.map +0 -1
- package/dist/dts/BrowserRuntime.d.ts +0 -10
- package/dist/dts/BrowserRuntime.d.ts.map +0 -1
- package/dist/dts/BrowserSocket.d.ts.map +0 -1
- package/dist/dts/BrowserStream.d.ts +0 -25
- package/dist/dts/BrowserStream.d.ts.map +0 -1
- package/dist/dts/BrowserWorker.d.ts +0 -26
- package/dist/dts/BrowserWorker.d.ts.map +0 -1
- package/dist/dts/BrowserWorkerRunner.d.ts +0 -27
- package/dist/dts/BrowserWorkerRunner.d.ts.map +0 -1
- package/dist/dts/Clipboard.d.ts.map +0 -1
- package/dist/dts/Geolocation.d.ts +0 -67
- package/dist/dts/Geolocation.d.ts.map +0 -1
- package/dist/dts/Permissions.d.ts +0 -67
- package/dist/dts/Permissions.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -41
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/internal/httpClient.d.ts +0 -2
- package/dist/dts/internal/httpClient.d.ts.map +0 -1
- package/dist/dts/internal/keyValueStore.d.ts +0 -2
- package/dist/dts/internal/keyValueStore.d.ts.map +0 -1
- package/dist/dts/internal/runtime.d.ts +0 -2
- package/dist/dts/internal/runtime.d.ts.map +0 -1
- package/dist/dts/internal/stream.d.ts +0 -5
- package/dist/dts/internal/stream.d.ts.map +0 -1
- package/dist/dts/internal/worker.d.ts +0 -2
- package/dist/dts/internal/worker.d.ts.map +0 -1
- package/dist/dts/internal/workerRunner.d.ts +0 -2
- package/dist/dts/internal/workerRunner.d.ts.map +0 -1
- package/dist/esm/BrowserHttpClient.js +0 -23
- package/dist/esm/BrowserHttpClient.js.map +0 -1
- package/dist/esm/BrowserKeyValueStore.js +0 -16
- package/dist/esm/BrowserKeyValueStore.js.map +0 -1
- package/dist/esm/BrowserRuntime.js +0 -7
- package/dist/esm/BrowserRuntime.js.map +0 -1
- package/dist/esm/BrowserSocket.js.map +0 -1
- package/dist/esm/BrowserStream.js +0 -15
- package/dist/esm/BrowserStream.js.map +0 -1
- package/dist/esm/BrowserWorker.js +0 -22
- package/dist/esm/BrowserWorker.js.map +0 -1
- package/dist/esm/BrowserWorkerRunner.js +0 -23
- package/dist/esm/BrowserWorkerRunner.js.map +0 -1
- package/dist/esm/Clipboard.js.map +0 -1
- package/dist/esm/Geolocation.js +0 -63
- package/dist/esm/Geolocation.js.map +0 -1
- package/dist/esm/Permissions.js +0 -50
- package/dist/esm/Permissions.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internal/httpClient.js.map +0 -1
- package/dist/esm/internal/keyValueStore.js +0 -6
- package/dist/esm/internal/keyValueStore.js.map +0 -1
- package/dist/esm/internal/runtime.js +0 -10
- package/dist/esm/internal/runtime.js.map +0 -1
- package/dist/esm/internal/stream.js +0 -9
- package/dist/esm/internal/stream.js.map +0 -1
- package/dist/esm/internal/worker.js.map +0 -1
- package/dist/esm/internal/workerRunner.js +0 -135
- package/dist/esm/internal/workerRunner.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/index/package.json +0 -6
- package/src/internal/httpClient.ts +0 -324
- package/src/internal/keyValueStore.ts +0 -7
- package/src/internal/runtime.ts +0 -8
- package/src/internal/stream.ts +0 -27
- package/src/internal/worker.ts +0 -58
- package/src/internal/workerRunner.ts +0 -155
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
3
4
|
import * as Deferred from "effect/Deferred";
|
|
4
5
|
import * as Effect from "effect/Effect";
|
|
5
6
|
import * as Layer from "effect/Layer";
|
|
6
7
|
import * as Scope from "effect/Scope";
|
|
7
|
-
|
|
8
|
+
import * as Worker from "effect/unstable/workers/Worker";
|
|
9
|
+
import { WorkerError, WorkerReceiveError } from "effect/unstable/workers/WorkerError";
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category Layers
|
|
13
|
+
*/
|
|
14
|
+
export const layer = spawn => Layer.merge(layerPlatform, Worker.layerSpawner(spawn));
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category Layers
|
|
18
|
+
*/
|
|
19
|
+
export const layerPlatform = /*#__PURE__*/Layer.succeed(Worker.WorkerPlatform)(/*#__PURE__*/Worker.makePlatform()({
|
|
8
20
|
setup({
|
|
9
21
|
scope,
|
|
10
22
|
worker
|
|
@@ -24,10 +36,12 @@ const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
|
|
|
24
36
|
emit(event.data);
|
|
25
37
|
}
|
|
26
38
|
function onError(event) {
|
|
27
|
-
Deferred.
|
|
28
|
-
reason:
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
Deferred.doneUnsafe(deferred, new WorkerError({
|
|
40
|
+
reason: new WorkerReceiveError({
|
|
41
|
+
message: "An error event was emitter",
|
|
42
|
+
cause: event.error ?? event.message
|
|
43
|
+
})
|
|
44
|
+
}).asEffect());
|
|
31
45
|
}
|
|
32
46
|
port.addEventListener("message", onMessage);
|
|
33
47
|
port.addEventListener("error", onError);
|
|
@@ -39,13 +53,5 @@ const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
|
|
|
39
53
|
port.removeEventListener("error", onError);
|
|
40
54
|
}));
|
|
41
55
|
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
export const layerWorker = /*#__PURE__*/Layer.succeed(Worker.PlatformWorker, platformWorkerImpl);
|
|
45
|
-
/** @internal */
|
|
46
|
-
export const layerManager = /*#__PURE__*/Layer.provide(Worker.layerManager, layerWorker);
|
|
47
|
-
/** @internal */
|
|
48
|
-
export const layer = spawn => Layer.merge(layerManager, Worker.layerSpawner(spawn));
|
|
49
|
-
/** @internal */
|
|
50
|
-
export const layerPlatform = spawn => Layer.merge(layerWorker, Worker.layerSpawner(spawn));
|
|
51
|
-
//# sourceMappingURL=worker.js.map
|
|
56
|
+
}));
|
|
57
|
+
//# sourceMappingURL=BrowserWorker.js.map
|
|
@@ -0,0 +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","asEffect","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,CAACG,QAAQ,EAAE,CACd;IACH;IACAjB,IAAI,CAACkB,gBAAgB,CAAC,SAAS,EAAEV,SAAgB,CAAC;IAClDR,IAAI,CAACkB,gBAAgB,CAAC,OAAO,EAAEP,OAAc,CAAC;IAC9C,IAAI,OAAO,IAAIX,IAAI,EAAE;MACnBA,IAAI,CAACmB,KAAK,EAAE;IACd;IACA,OAAOlC,KAAK,CAACiB,YAAY,CACvBJ,KAAK,EACLf,MAAM,CAACoB,IAAI,CAAC,MAAK;MACfH,IAAI,CAACoB,mBAAmB,CAAC,SAAS,EAAEZ,SAAgB,CAAC;MACrDR,IAAI,CAACoB,mBAAmB,CAAC,OAAO,EAAET,OAAc,CAAC;IACnD,CAAC,CAAC,CACH;EACH;CACD,CAAC,CACH","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as Layer from "effect/Layer";
|
|
2
|
+
import * as WorkerRunner from "effect/unstable/workers/WorkerRunner";
|
|
3
|
+
/**
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
* @category Constructors
|
|
6
|
+
*/
|
|
7
|
+
export declare const make: (self: MessagePort | Window) => WorkerRunner.WorkerRunnerPlatform["Service"];
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
* @category Layers
|
|
11
|
+
*/
|
|
12
|
+
export declare const layer: Layer.Layer<WorkerRunner.WorkerRunnerPlatform>;
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category Layers
|
|
16
|
+
*/
|
|
17
|
+
export declare const layerMessagePort: (port: MessagePort | Window) => Layer.Layer<WorkerRunner.WorkerRunnerPlatform>;
|
|
18
|
+
//# sourceMappingURL=BrowserWorkerRunner.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Cause from "effect/Cause";
|
|
5
|
+
import * as Deferred from "effect/Deferred";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Exit from "effect/Exit";
|
|
8
|
+
import * as Fiber from "effect/Fiber";
|
|
9
|
+
import { identity } from "effect/Function";
|
|
10
|
+
import * as Layer from "effect/Layer";
|
|
11
|
+
import * as Queue from "effect/Queue";
|
|
12
|
+
import * as Scope from "effect/Scope";
|
|
13
|
+
import { WorkerError, WorkerReceiveError } from "effect/unstable/workers/WorkerError";
|
|
14
|
+
import * as WorkerRunner from "effect/unstable/workers/WorkerRunner";
|
|
15
|
+
const cachedPorts = /*#__PURE__*/new Set();
|
|
16
|
+
function globalHandleConnect(event) {
|
|
17
|
+
cachedPorts.add(event.ports[0]);
|
|
18
|
+
}
|
|
19
|
+
if (typeof self !== "undefined" && "onconnect" in self) {
|
|
20
|
+
self.onconnect = globalHandleConnect;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @category Constructors
|
|
25
|
+
*/
|
|
26
|
+
export const make = self => ({
|
|
27
|
+
start: Effect.fnUntraced(function* () {
|
|
28
|
+
const disconnects = yield* Queue.make();
|
|
29
|
+
let currentPortId = 0;
|
|
30
|
+
const ports = new Map();
|
|
31
|
+
const sendUnsafe = (portId, message, transfer) => (ports.get(portId)?.[0] ?? self).postMessage([1, message], {
|
|
32
|
+
transfer: transfer
|
|
33
|
+
});
|
|
34
|
+
const send = (portId, message, transfer) => Effect.sync(() => sendUnsafe(portId, message, transfer));
|
|
35
|
+
const run = handler => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
|
|
36
|
+
const closeLatch = Deferred.makeUnsafe();
|
|
37
|
+
const trackFiber = Fiber.runIn(scope);
|
|
38
|
+
const services = yield* Effect.services();
|
|
39
|
+
const runFork = Effect.runForkWith(services);
|
|
40
|
+
const onExit = exit => {
|
|
41
|
+
if (exit._tag === "Failure" && !Cause.hasInterruptsOnly(exit.cause)) {
|
|
42
|
+
runFork(Effect.logError("unhandled error in worker", exit.cause));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
function onMessage(portId) {
|
|
46
|
+
return function (event) {
|
|
47
|
+
const message = event.data;
|
|
48
|
+
if (message[0] === 0) {
|
|
49
|
+
const result = handler(portId, message[1]);
|
|
50
|
+
if (Effect.isEffect(result)) {
|
|
51
|
+
const fiber = runFork(result);
|
|
52
|
+
fiber.addObserver(onExit);
|
|
53
|
+
trackFiber(fiber);
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
const port = ports.get(portId);
|
|
57
|
+
if (!port) {
|
|
58
|
+
return;
|
|
59
|
+
} else if (ports.size === 1) {
|
|
60
|
+
// let the last port close with the outer scope
|
|
61
|
+
return Deferred.doneUnsafe(closeLatch, Exit.void);
|
|
62
|
+
}
|
|
63
|
+
ports.delete(portId);
|
|
64
|
+
Effect.runFork(Scope.close(port[1], Exit.void));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function onMessageError(error) {
|
|
69
|
+
Deferred.doneUnsafe(closeLatch, new WorkerError({
|
|
70
|
+
reason: new WorkerReceiveError({
|
|
71
|
+
message: "An messageerror event was emitted",
|
|
72
|
+
cause: error.data
|
|
73
|
+
})
|
|
74
|
+
}).asEffect());
|
|
75
|
+
}
|
|
76
|
+
function onError(error) {
|
|
77
|
+
Deferred.doneUnsafe(closeLatch, new WorkerError({
|
|
78
|
+
reason: new WorkerReceiveError({
|
|
79
|
+
message: "An error event was emitted",
|
|
80
|
+
cause: error.data
|
|
81
|
+
})
|
|
82
|
+
}).asEffect());
|
|
83
|
+
}
|
|
84
|
+
function handlePort(port) {
|
|
85
|
+
const portScope = Scope.forkUnsafe(scope);
|
|
86
|
+
const portId = currentPortId++;
|
|
87
|
+
ports.set(portId, [port, portScope]);
|
|
88
|
+
const onMsg = onMessage(portId);
|
|
89
|
+
port.addEventListener("message", onMsg);
|
|
90
|
+
port.addEventListener("messageerror", onMessageError);
|
|
91
|
+
if ("start" in port) {
|
|
92
|
+
port.start();
|
|
93
|
+
}
|
|
94
|
+
port.postMessage([0]);
|
|
95
|
+
Effect.runSync(Scope.addFinalizer(portScope, Effect.sync(() => {
|
|
96
|
+
port.removeEventListener("message", onMsg);
|
|
97
|
+
port.removeEventListener("messageerror", onError);
|
|
98
|
+
port.close();
|
|
99
|
+
})));
|
|
100
|
+
}
|
|
101
|
+
self.addEventListener("error", onError);
|
|
102
|
+
let prevOnConnect;
|
|
103
|
+
if ("onconnect" in self) {
|
|
104
|
+
prevOnConnect = self.onconnect;
|
|
105
|
+
self.onconnect = function (event) {
|
|
106
|
+
const port = event.ports[0];
|
|
107
|
+
handlePort(port);
|
|
108
|
+
};
|
|
109
|
+
for (const port of cachedPorts) {
|
|
110
|
+
handlePort(port);
|
|
111
|
+
}
|
|
112
|
+
cachedPorts.clear();
|
|
113
|
+
} else {
|
|
114
|
+
handlePort(self);
|
|
115
|
+
}
|
|
116
|
+
yield* Scope.addFinalizer(scope, Effect.sync(() => {
|
|
117
|
+
self.removeEventListener("error", onError);
|
|
118
|
+
if ("onconnect" in self) {
|
|
119
|
+
self.close();
|
|
120
|
+
self.onconnect = prevOnConnect;
|
|
121
|
+
}
|
|
122
|
+
}));
|
|
123
|
+
yield* Deferred.await(closeLatch);
|
|
124
|
+
}));
|
|
125
|
+
return identity({
|
|
126
|
+
run,
|
|
127
|
+
send,
|
|
128
|
+
sendUnsafe,
|
|
129
|
+
disconnects
|
|
130
|
+
});
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
/**
|
|
134
|
+
* @since 1.0.0
|
|
135
|
+
* @category Layers
|
|
136
|
+
*/
|
|
137
|
+
export const layer = /*#__PURE__*/Layer.sync(WorkerRunner.WorkerRunnerPlatform)(() => make(self));
|
|
138
|
+
/**
|
|
139
|
+
* @since 1.0.0
|
|
140
|
+
* @category Layers
|
|
141
|
+
*/
|
|
142
|
+
export const layerMessagePort = port => Layer.succeed(WorkerRunner.WorkerRunnerPlatform)(make(port));
|
|
143
|
+
//# sourceMappingURL=BrowserWorkerRunner.js.map
|
|
@@ -0,0 +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","asEffect","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,22 +1,14 @@
|
|
|
1
|
-
import * as Context from "effect/Context";
|
|
2
1
|
import * as Effect from "effect/Effect";
|
|
3
2
|
import * as Layer from "effect/Layer";
|
|
3
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
4
|
+
declare const TypeId = "~@effect/platform-browser/Clipboard";
|
|
5
|
+
declare const ErrorTypeId = "~@effect/platform-browser/Clipboard/ClipboardError";
|
|
4
6
|
/**
|
|
5
7
|
* @since 1.0.0
|
|
6
|
-
* @category
|
|
7
|
-
*/
|
|
8
|
-
export declare const TypeId: unique symbol;
|
|
9
|
-
/**
|
|
10
|
-
* @since 1.0.0
|
|
11
|
-
* @category type ids
|
|
12
|
-
*/
|
|
13
|
-
export type TypeId = typeof TypeId;
|
|
14
|
-
/**
|
|
15
|
-
* @since 1.0.0
|
|
16
|
-
* @category interface
|
|
8
|
+
* @category Models
|
|
17
9
|
*/
|
|
18
10
|
export interface Clipboard {
|
|
19
|
-
readonly [TypeId]: TypeId;
|
|
11
|
+
readonly [TypeId]: typeof TypeId;
|
|
20
12
|
readonly read: Effect.Effect<ClipboardItems, ClipboardError>;
|
|
21
13
|
readonly readString: Effect.Effect<string, ClipboardError>;
|
|
22
14
|
readonly write: (items: ClipboardItems) => Effect.Effect<void, ClipboardError>;
|
|
@@ -24,43 +16,34 @@ export interface Clipboard {
|
|
|
24
16
|
readonly writeBlob: (blob: Blob) => Effect.Effect<void, ClipboardError>;
|
|
25
17
|
readonly clear: Effect.Effect<void, ClipboardError>;
|
|
26
18
|
}
|
|
27
|
-
|
|
28
|
-
* @since 1.0.0
|
|
29
|
-
* @category type ids
|
|
30
|
-
*/
|
|
31
|
-
export declare const ErrorTypeId: unique symbol;
|
|
32
|
-
/**
|
|
33
|
-
* @since 1.0.0
|
|
34
|
-
* @category type ids
|
|
35
|
-
*/
|
|
36
|
-
export type ErrorTypeId = typeof ErrorTypeId;
|
|
37
|
-
declare const ClipboardError_base: new <A extends Record<string, any>>(args: import("effect/Types").Simplify<A>) => import("effect/Cause").YieldableError & Record<typeof ErrorTypeId, typeof ErrorTypeId> & {
|
|
19
|
+
declare const ClipboardError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
38
20
|
readonly _tag: "ClipboardError";
|
|
39
21
|
} & Readonly<A>;
|
|
40
22
|
/**
|
|
41
23
|
* @since 1.0.0
|
|
42
|
-
* @category
|
|
24
|
+
* @category Errors
|
|
43
25
|
*/
|
|
44
26
|
export declare class ClipboardError extends ClipboardError_base<{
|
|
45
27
|
readonly message: string;
|
|
46
28
|
readonly cause: unknown;
|
|
47
29
|
}> {
|
|
30
|
+
readonly [ErrorTypeId] = "~@effect/platform-browser/Clipboard/ClipboardError";
|
|
48
31
|
}
|
|
49
32
|
/**
|
|
50
33
|
* @since 1.0.0
|
|
51
|
-
* @category
|
|
34
|
+
* @category Service
|
|
52
35
|
*/
|
|
53
|
-
export declare const Clipboard:
|
|
36
|
+
export declare const Clipboard: ServiceMap.Service<Clipboard, Clipboard>;
|
|
54
37
|
/**
|
|
55
38
|
* @since 1.0.0
|
|
56
|
-
* @category
|
|
39
|
+
* @category Constructors
|
|
57
40
|
*/
|
|
58
|
-
export declare const make: (impl: Omit<Clipboard, "clear" | "writeBlob" | TypeId>) => Clipboard;
|
|
41
|
+
export declare const make: (impl: Omit<Clipboard, "clear" | "writeBlob" | typeof TypeId>) => Clipboard;
|
|
59
42
|
/**
|
|
60
43
|
* A layer that directly interfaces with the navigator.clipboard api
|
|
61
44
|
*
|
|
62
45
|
* @since 1.0.0
|
|
63
|
-
* @category
|
|
46
|
+
* @category Layers
|
|
64
47
|
*/
|
|
65
48
|
export declare const layer: Layer.Layer<Clipboard>;
|
|
66
49
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Clipboard.d.ts","sourceRoot":"","sources":["../src/Clipboard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,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,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAyC,CAAA;AAExG;;;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,33 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
import * as Context from "effect/Context";
|
|
4
|
+
import * as Data from "effect/Data";
|
|
6
5
|
import * as Effect from "effect/Effect";
|
|
7
6
|
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
8
|
+
const TypeId = "~@effect/platform-browser/Clipboard";
|
|
9
|
+
const ErrorTypeId = "~@effect/platform-browser/Clipboard/ClipboardError";
|
|
8
10
|
/**
|
|
9
11
|
* @since 1.0.0
|
|
10
|
-
* @category
|
|
12
|
+
* @category Errors
|
|
11
13
|
*/
|
|
12
|
-
export
|
|
14
|
+
export class ClipboardError extends /*#__PURE__*/Data.TaggedError("ClipboardError") {
|
|
15
|
+
[ErrorTypeId] = ErrorTypeId;
|
|
16
|
+
}
|
|
13
17
|
/**
|
|
14
18
|
* @since 1.0.0
|
|
15
|
-
* @category
|
|
19
|
+
* @category Service
|
|
16
20
|
*/
|
|
17
|
-
export const
|
|
21
|
+
export const Clipboard = /*#__PURE__*/ServiceMap.Service(TypeId);
|
|
18
22
|
/**
|
|
19
23
|
* @since 1.0.0
|
|
20
|
-
* @category
|
|
21
|
-
*/
|
|
22
|
-
export class ClipboardError extends /*#__PURE__*/TypeIdError(ErrorTypeId, "ClipboardError") {}
|
|
23
|
-
/**
|
|
24
|
-
* @since 1.0.0
|
|
25
|
-
* @category tag
|
|
26
|
-
*/
|
|
27
|
-
export const Clipboard = /*#__PURE__*/Context.GenericTag("@effect/platform-browser/Clipboard");
|
|
28
|
-
/**
|
|
29
|
-
* @since 1.0.0
|
|
30
|
-
* @category constructor
|
|
24
|
+
* @category Constructors
|
|
31
25
|
*/
|
|
32
26
|
export const make = impl => Clipboard.of({
|
|
33
27
|
...impl,
|
|
@@ -41,7 +35,7 @@ export const make = impl => Clipboard.of({
|
|
|
41
35
|
* A layer that directly interfaces with the navigator.clipboard api
|
|
42
36
|
*
|
|
43
37
|
* @since 1.0.0
|
|
44
|
-
* @category
|
|
38
|
+
* @category Layers
|
|
45
39
|
*/
|
|
46
40
|
export const layer = /*#__PURE__*/Layer.succeed(Clipboard, /*#__PURE__*/make({
|
|
47
41
|
read: /*#__PURE__*/Effect.tryPromise({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Clipboard.js","names":["Data","Effect","Layer","ServiceMap","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,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAE/C,MAAMC,MAAM,GAAG,qCAAqC;AACpD,MAAMC,WAAW,GAAG,oDAAoD;AAgBxE;;;;AAIA,OAAM,MAAOC,cAAe,sBAAQN,IAAI,CAACO,WAAW,CAAC,gBAAgB,CAGnE;EACS,CAACF,WAAW,IAAIA,WAAW;;AAGtC;;;;AAIA,OAAO,MAAMG,SAAS,gBAA6CL,UAAU,CAACM,OAAO,CAAYL,MAAM,CAAC;AAExG;;;;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,gBAA2BlB,KAAK,CAACmB,OAAO,CACxDb,SAAS,eACTE,IAAI,CAAC;EACHY,IAAI,eAAErB,MAAM,CAACsB,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,IAC7B5B,MAAM,CAACsB,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,eAAE7B,MAAM,CAACsB,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,IACxB/B,MAAM,CAACsB,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":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Cause from "effect/Cause";
|
|
5
|
+
import * as Effect from "effect/Effect";
|
|
6
|
+
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
8
|
+
import * as Stream from "effect/Stream";
|
|
9
|
+
declare const TypeId = "~@effect/platform-browser/Geolocation";
|
|
10
|
+
declare const ErrorTypeId = "~@effect/platform-browser/Geolocation/GeolocationError";
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category Models
|
|
14
|
+
*/
|
|
15
|
+
export interface Geolocation {
|
|
16
|
+
readonly [TypeId]: typeof TypeId;
|
|
17
|
+
readonly getCurrentPosition: (options?: PositionOptions | undefined) => Effect.Effect<GeolocationPosition, GeolocationError>;
|
|
18
|
+
readonly watchPosition: (options?: PositionOptions & {
|
|
19
|
+
readonly bufferSize?: number | undefined;
|
|
20
|
+
} | undefined) => Stream.Stream<GeolocationPosition, GeolocationError>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @category Service
|
|
25
|
+
*/
|
|
26
|
+
export declare const Geolocation: ServiceMap.Service<Geolocation, Geolocation>;
|
|
27
|
+
declare const GeolocationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
|
|
28
|
+
readonly _tag: "GeolocationError";
|
|
29
|
+
} & Readonly<A>;
|
|
30
|
+
/**
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
* @category Errors
|
|
33
|
+
*/
|
|
34
|
+
export declare class GeolocationError extends GeolocationError_base<{
|
|
35
|
+
readonly reason: GeolocationErrorReason;
|
|
36
|
+
}> {
|
|
37
|
+
constructor(props: {
|
|
38
|
+
readonly reason: GeolocationErrorReason;
|
|
39
|
+
});
|
|
40
|
+
readonly [ErrorTypeId] = "~@effect/platform-browser/Geolocation/GeolocationError";
|
|
41
|
+
get message(): string;
|
|
42
|
+
}
|
|
43
|
+
declare const PositionUnavailable_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
|
|
44
|
+
readonly _tag: "PositionUnavailable";
|
|
45
|
+
} & Readonly<A>;
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category Errors
|
|
49
|
+
*/
|
|
50
|
+
export declare class PositionUnavailable extends PositionUnavailable_base<{
|
|
51
|
+
readonly cause: unknown;
|
|
52
|
+
}> {
|
|
53
|
+
get message(): string;
|
|
54
|
+
}
|
|
55
|
+
declare const PermissionDenied_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
|
|
56
|
+
readonly _tag: "PermissionDenied";
|
|
57
|
+
} & Readonly<A>;
|
|
58
|
+
/**
|
|
59
|
+
* @since 1.0.0
|
|
60
|
+
* @category Errors
|
|
61
|
+
*/
|
|
62
|
+
export declare class PermissionDenied extends PermissionDenied_base<{
|
|
63
|
+
readonly cause: unknown;
|
|
64
|
+
}> {
|
|
65
|
+
get message(): string;
|
|
66
|
+
}
|
|
67
|
+
declare const Timeout_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
|
|
68
|
+
readonly _tag: "Timeout";
|
|
69
|
+
} & Readonly<A>;
|
|
70
|
+
/**
|
|
71
|
+
* @since 1.0.0
|
|
72
|
+
* @category Errors
|
|
73
|
+
*/
|
|
74
|
+
export declare class Timeout extends Timeout_base<{
|
|
75
|
+
readonly cause: unknown;
|
|
76
|
+
}> {
|
|
77
|
+
get message(): string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @since 1.0.0
|
|
81
|
+
* @category Errors
|
|
82
|
+
*/
|
|
83
|
+
export type GeolocationErrorReason = PositionUnavailable | PermissionDenied | Timeout;
|
|
84
|
+
/**
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
* @category Layers
|
|
87
|
+
*/
|
|
88
|
+
export declare const layer: Layer.Layer<Geolocation>;
|
|
89
|
+
/**
|
|
90
|
+
* @since 1.0.0
|
|
91
|
+
* @category Accessors
|
|
92
|
+
*/
|
|
93
|
+
export declare const watchPosition: (options?: (PositionOptions & {
|
|
94
|
+
readonly bufferSize?: number | undefined;
|
|
95
|
+
}) | undefined) => Stream.Stream<GeolocationPosition, GeolocationError, Geolocation>;
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=Geolocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Geolocation.d.ts","sourceRoot":"","sources":["../src/Geolocation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,QAAA,MAAM,MAAM,0CAA0C,CAAA;AACtD,QAAA,MAAM,WAAW,2DAA2D,CAAA;AAE5E;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,KAClC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;IACzD,QAAQ,CAAC,aAAa,EAAE,CACtB,OAAO,CAAC,EACJ,eAAe,GAAG;QAClB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACzC,GACC,SAAS,KACV,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;CAC1D;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAA2C,CAAA;;;;AAEhH;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;CACxC,CAAC;gBACY,KAAK,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;KACxC;IAOD,QAAQ,CAAC,CAAC,WAAW,CAAC,4DAAc;IAEpC,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,yBAAwC;IAC/E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,aAA4B;IACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,OAAO,CAAA;AAyCrF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAe1C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,UACE,CAAE,eAAe,GAAG;IAClB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,IACC,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,WAAW,CAI/D,CAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Cause from "effect/Cause";
|
|
5
|
+
import * as Data from "effect/Data";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Layer from "effect/Layer";
|
|
8
|
+
import * as Queue from "effect/Queue";
|
|
9
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
10
|
+
import * as Stream from "effect/Stream";
|
|
11
|
+
const TypeId = "~@effect/platform-browser/Geolocation";
|
|
12
|
+
const ErrorTypeId = "~@effect/platform-browser/Geolocation/GeolocationError";
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category Service
|
|
16
|
+
*/
|
|
17
|
+
export const Geolocation = /*#__PURE__*/ServiceMap.Service(TypeId);
|
|
18
|
+
/**
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category Errors
|
|
21
|
+
*/
|
|
22
|
+
export class GeolocationError extends /*#__PURE__*/Data.TaggedError("GeolocationError") {
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super({
|
|
25
|
+
...props,
|
|
26
|
+
cause: props.reason.cause
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
[ErrorTypeId] = ErrorTypeId;
|
|
30
|
+
get message() {
|
|
31
|
+
return this.reason.message;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
* @category Errors
|
|
37
|
+
*/
|
|
38
|
+
export class PositionUnavailable extends /*#__PURE__*/Data.TaggedError("PositionUnavailable") {
|
|
39
|
+
get message() {
|
|
40
|
+
return this._tag;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
* @category Errors
|
|
46
|
+
*/
|
|
47
|
+
export class PermissionDenied extends /*#__PURE__*/Data.TaggedError("PermissionDenied") {
|
|
48
|
+
get message() {
|
|
49
|
+
return this._tag;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @category Errors
|
|
55
|
+
*/
|
|
56
|
+
export class Timeout extends /*#__PURE__*/Data.TaggedError("Timeout") {
|
|
57
|
+
get message() {
|
|
58
|
+
return this._tag;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const makeQueue = options => Queue.sliding(options?.bufferSize ?? 16).pipe(Effect.tap(queue => Effect.acquireRelease(Effect.sync(() => navigator.geolocation.watchPosition(position => Queue.offerUnsafe(queue, position), cause => {
|
|
62
|
+
if (cause.code === cause.PERMISSION_DENIED) {
|
|
63
|
+
const error = new GeolocationError({
|
|
64
|
+
reason: new PermissionDenied({
|
|
65
|
+
cause
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
Queue.failCauseUnsafe(queue, Cause.fail(error));
|
|
69
|
+
} else if (cause.code === cause.TIMEOUT) {
|
|
70
|
+
const error = new GeolocationError({
|
|
71
|
+
reason: new Timeout({
|
|
72
|
+
cause
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
Queue.failCauseUnsafe(queue, Cause.fail(error));
|
|
76
|
+
} else if (cause.code === cause.POSITION_UNAVAILABLE) {
|
|
77
|
+
const error = new GeolocationError({
|
|
78
|
+
reason: new PositionUnavailable({
|
|
79
|
+
cause
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
Queue.failCauseUnsafe(queue, Cause.fail(error));
|
|
83
|
+
}
|
|
84
|
+
}, options)), handleId => Effect.sync(() => navigator.geolocation.clearWatch(handleId)))));
|
|
85
|
+
/**
|
|
86
|
+
* @since 1.0.0
|
|
87
|
+
* @category Layers
|
|
88
|
+
*/
|
|
89
|
+
export const layer = /*#__PURE__*/Layer.succeed(Geolocation, /*#__PURE__*/Geolocation.of({
|
|
90
|
+
[TypeId]: TypeId,
|
|
91
|
+
getCurrentPosition: options => makeQueue(options).pipe(Effect.flatMap(Queue.take), Effect.scoped),
|
|
92
|
+
watchPosition: options => makeQueue(options).pipe(Effect.map(Stream.fromQueue), Stream.unwrap)
|
|
93
|
+
}));
|
|
94
|
+
/**
|
|
95
|
+
* @since 1.0.0
|
|
96
|
+
* @category Accessors
|
|
97
|
+
*/
|
|
98
|
+
export const watchPosition = options => Stream.unwrap(Effect.map(Effect.service(Geolocation), geolocation => geolocation.watchPosition(options)));
|
|
99
|
+
//# sourceMappingURL=Geolocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Geolocation.js","names":["Cause","Data","Effect","Layer","Queue","ServiceMap","Stream","TypeId","ErrorTypeId","Geolocation","Service","GeolocationError","TaggedError","constructor","props","cause","reason","message","PositionUnavailable","_tag","PermissionDenied","Timeout","makeQueue","options","sliding","bufferSize","pipe","tap","queue","acquireRelease","sync","navigator","geolocation","watchPosition","position","offerUnsafe","code","PERMISSION_DENIED","error","failCauseUnsafe","fail","TIMEOUT","POSITION_UNAVAILABLE","handleId","clearWatch","layer","succeed","of","getCurrentPosition","flatMap","take","scoped","map","fromQueue","unwrap","service"],"sources":["../src/Geolocation.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|