@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.
Files changed (170) hide show
  1. package/README.md +0 -6
  2. package/dist/BrowserHttpClient.d.ts +49 -0
  3. package/dist/BrowserHttpClient.d.ts.map +1 -0
  4. package/dist/{esm/internal/httpClient.js → BrowserHttpClient.js} +98 -60
  5. package/dist/BrowserHttpClient.js.map +1 -0
  6. package/dist/BrowserKeyValueStore.d.ts +24 -0
  7. package/dist/BrowserKeyValueStore.d.ts.map +1 -0
  8. package/dist/BrowserKeyValueStore.js +20 -0
  9. package/dist/BrowserKeyValueStore.js.map +1 -0
  10. package/dist/BrowserRuntime.d.ts +28 -0
  11. package/dist/BrowserRuntime.d.ts.map +1 -0
  12. package/dist/BrowserRuntime.js +13 -0
  13. package/dist/BrowserRuntime.js.map +1 -0
  14. package/dist/{dts/BrowserSocket.d.ts → BrowserSocket.d.ts} +4 -4
  15. package/dist/BrowserSocket.d.ts.map +1 -0
  16. package/dist/{esm/BrowserSocket.js → BrowserSocket.js} +5 -5
  17. package/dist/BrowserSocket.js.map +1 -0
  18. package/dist/BrowserStream.d.ts +35 -0
  19. package/dist/BrowserStream.d.ts.map +1 -0
  20. package/dist/BrowserStream.js +25 -0
  21. package/dist/BrowserStream.js.map +1 -0
  22. package/dist/BrowserWorker.d.ts +13 -0
  23. package/dist/BrowserWorker.d.ts.map +1 -0
  24. package/dist/{esm/internal/worker.js → BrowserWorker.js} +23 -17
  25. package/dist/BrowserWorker.js.map +1 -0
  26. package/dist/BrowserWorkerRunner.d.ts +18 -0
  27. package/dist/BrowserWorkerRunner.d.ts.map +1 -0
  28. package/dist/BrowserWorkerRunner.js +143 -0
  29. package/dist/BrowserWorkerRunner.js.map +1 -0
  30. package/dist/{dts/Clipboard.d.ts → Clipboard.d.ts} +13 -30
  31. package/dist/Clipboard.d.ts.map +1 -0
  32. package/dist/{esm/Clipboard.js → Clipboard.js} +12 -18
  33. package/dist/Clipboard.js.map +1 -0
  34. package/dist/Geolocation.d.ts +97 -0
  35. package/dist/Geolocation.d.ts.map +1 -0
  36. package/dist/Geolocation.js +99 -0
  37. package/dist/Geolocation.js.map +1 -0
  38. package/dist/Permissions.d.ts +80 -0
  39. package/dist/Permissions.d.ts.map +1 -0
  40. package/dist/Permissions.js +70 -0
  41. package/dist/Permissions.js.map +1 -0
  42. package/dist/index.d.ts +44 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/{esm/index.js → index.js} +4 -0
  45. package/dist/index.js.map +1 -0
  46. package/package.json +51 -111
  47. package/src/BrowserHttpClient.ts +364 -16
  48. package/src/BrowserKeyValueStore.ts +15 -8
  49. package/src/BrowserRuntime.ts +30 -4
  50. package/src/BrowserSocket.ts +5 -5
  51. package/src/BrowserStream.ts +20 -10
  52. package/src/BrowserWorker.ts +58 -21
  53. package/src/BrowserWorkerRunner.ts +151 -18
  54. package/src/Clipboard.ts +16 -38
  55. package/src/Geolocation.ts +80 -40
  56. package/src/Permissions.ts +49 -34
  57. package/src/index.ts +16 -10
  58. package/BrowserHttpClient/package.json +0 -6
  59. package/BrowserKeyValueStore/package.json +0 -6
  60. package/BrowserRuntime/package.json +0 -6
  61. package/BrowserSocket/package.json +0 -6
  62. package/BrowserStream/package.json +0 -6
  63. package/BrowserWorker/package.json +0 -6
  64. package/BrowserWorkerRunner/package.json +0 -6
  65. package/Clipboard/package.json +0 -6
  66. package/Geolocation/package.json +0 -6
  67. package/Permissions/package.json +0 -6
  68. package/dist/cjs/BrowserHttpClient.js +0 -31
  69. package/dist/cjs/BrowserHttpClient.js.map +0 -1
  70. package/dist/cjs/BrowserKeyValueStore.js +0 -23
  71. package/dist/cjs/BrowserKeyValueStore.js.map +0 -1
  72. package/dist/cjs/BrowserRuntime.js +0 -14
  73. package/dist/cjs/BrowserRuntime.js.map +0 -1
  74. package/dist/cjs/BrowserSocket.js +0 -27
  75. package/dist/cjs/BrowserSocket.js.map +0 -1
  76. package/dist/cjs/BrowserStream.js +0 -23
  77. package/dist/cjs/BrowserStream.js.map +0 -1
  78. package/dist/cjs/BrowserWorker.js +0 -29
  79. package/dist/cjs/BrowserWorker.js.map +0 -1
  80. package/dist/cjs/BrowserWorkerRunner.js +0 -31
  81. package/dist/cjs/BrowserWorkerRunner.js.map +0 -1
  82. package/dist/cjs/Clipboard.js +0 -86
  83. package/dist/cjs/Clipboard.js.map +0 -1
  84. package/dist/cjs/Geolocation.js +0 -73
  85. package/dist/cjs/Geolocation.js.map +0 -1
  86. package/dist/cjs/Permissions.js +0 -59
  87. package/dist/cjs/Permissions.js.map +0 -1
  88. package/dist/cjs/index.js +0 -28
  89. package/dist/cjs/index.js.map +0 -1
  90. package/dist/cjs/internal/httpClient.js +0 -266
  91. package/dist/cjs/internal/httpClient.js.map +0 -1
  92. package/dist/cjs/internal/keyValueStore.js +0 -13
  93. package/dist/cjs/internal/keyValueStore.js.map +0 -1
  94. package/dist/cjs/internal/runtime.js +0 -16
  95. package/dist/cjs/internal/runtime.js.map +0 -1
  96. package/dist/cjs/internal/stream.js +0 -19
  97. package/dist/cjs/internal/stream.js.map +0 -1
  98. package/dist/cjs/internal/worker.js +0 -60
  99. package/dist/cjs/internal/worker.js.map +0 -1
  100. package/dist/cjs/internal/workerRunner.js +0 -144
  101. package/dist/cjs/internal/workerRunner.js.map +0 -1
  102. package/dist/dts/BrowserHttpClient.d.ts +0 -33
  103. package/dist/dts/BrowserHttpClient.d.ts.map +0 -1
  104. package/dist/dts/BrowserKeyValueStore.d.ts +0 -20
  105. package/dist/dts/BrowserKeyValueStore.d.ts.map +0 -1
  106. package/dist/dts/BrowserRuntime.d.ts +0 -10
  107. package/dist/dts/BrowserRuntime.d.ts.map +0 -1
  108. package/dist/dts/BrowserSocket.d.ts.map +0 -1
  109. package/dist/dts/BrowserStream.d.ts +0 -25
  110. package/dist/dts/BrowserStream.d.ts.map +0 -1
  111. package/dist/dts/BrowserWorker.d.ts +0 -26
  112. package/dist/dts/BrowserWorker.d.ts.map +0 -1
  113. package/dist/dts/BrowserWorkerRunner.d.ts +0 -27
  114. package/dist/dts/BrowserWorkerRunner.d.ts.map +0 -1
  115. package/dist/dts/Clipboard.d.ts.map +0 -1
  116. package/dist/dts/Geolocation.d.ts +0 -67
  117. package/dist/dts/Geolocation.d.ts.map +0 -1
  118. package/dist/dts/Permissions.d.ts +0 -67
  119. package/dist/dts/Permissions.d.ts.map +0 -1
  120. package/dist/dts/index.d.ts +0 -41
  121. package/dist/dts/index.d.ts.map +0 -1
  122. package/dist/dts/internal/httpClient.d.ts +0 -2
  123. package/dist/dts/internal/httpClient.d.ts.map +0 -1
  124. package/dist/dts/internal/keyValueStore.d.ts +0 -2
  125. package/dist/dts/internal/keyValueStore.d.ts.map +0 -1
  126. package/dist/dts/internal/runtime.d.ts +0 -2
  127. package/dist/dts/internal/runtime.d.ts.map +0 -1
  128. package/dist/dts/internal/stream.d.ts +0 -5
  129. package/dist/dts/internal/stream.d.ts.map +0 -1
  130. package/dist/dts/internal/worker.d.ts +0 -2
  131. package/dist/dts/internal/worker.d.ts.map +0 -1
  132. package/dist/dts/internal/workerRunner.d.ts +0 -2
  133. package/dist/dts/internal/workerRunner.d.ts.map +0 -1
  134. package/dist/esm/BrowserHttpClient.js +0 -23
  135. package/dist/esm/BrowserHttpClient.js.map +0 -1
  136. package/dist/esm/BrowserKeyValueStore.js +0 -16
  137. package/dist/esm/BrowserKeyValueStore.js.map +0 -1
  138. package/dist/esm/BrowserRuntime.js +0 -7
  139. package/dist/esm/BrowserRuntime.js.map +0 -1
  140. package/dist/esm/BrowserSocket.js.map +0 -1
  141. package/dist/esm/BrowserStream.js +0 -15
  142. package/dist/esm/BrowserStream.js.map +0 -1
  143. package/dist/esm/BrowserWorker.js +0 -22
  144. package/dist/esm/BrowserWorker.js.map +0 -1
  145. package/dist/esm/BrowserWorkerRunner.js +0 -23
  146. package/dist/esm/BrowserWorkerRunner.js.map +0 -1
  147. package/dist/esm/Clipboard.js.map +0 -1
  148. package/dist/esm/Geolocation.js +0 -63
  149. package/dist/esm/Geolocation.js.map +0 -1
  150. package/dist/esm/Permissions.js +0 -50
  151. package/dist/esm/Permissions.js.map +0 -1
  152. package/dist/esm/index.js.map +0 -1
  153. package/dist/esm/internal/httpClient.js.map +0 -1
  154. package/dist/esm/internal/keyValueStore.js +0 -6
  155. package/dist/esm/internal/keyValueStore.js.map +0 -1
  156. package/dist/esm/internal/runtime.js +0 -10
  157. package/dist/esm/internal/runtime.js.map +0 -1
  158. package/dist/esm/internal/stream.js +0 -9
  159. package/dist/esm/internal/stream.js.map +0 -1
  160. package/dist/esm/internal/worker.js.map +0 -1
  161. package/dist/esm/internal/workerRunner.js +0 -135
  162. package/dist/esm/internal/workerRunner.js.map +0 -1
  163. package/dist/esm/package.json +0 -4
  164. package/index/package.json +0 -6
  165. package/src/internal/httpClient.ts +0 -324
  166. package/src/internal/keyValueStore.ts +0 -7
  167. package/src/internal/runtime.ts +0 -8
  168. package/src/internal/stream.ts +0 -27
  169. package/src/internal/worker.ts +0 -58
  170. package/src/internal/workerRunner.ts +0 -155
@@ -1,10 +1,22 @@
1
- import * as Worker from "@effect/platform/Worker";
2
- import { WorkerError } from "@effect/platform/WorkerError";
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
- const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
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.unsafeDone(deferred, new WorkerError({
28
- reason: "unknown",
29
- cause: event.error ?? event.message
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
- /** @internal */
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 type ids
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 errors
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 tag
34
+ * @category Service
52
35
  */
53
- export declare const Clipboard: Context.Tag<Clipboard, Clipboard>;
36
+ export declare const Clipboard: ServiceMap.Service<Clipboard, Clipboard>;
54
37
  /**
55
38
  * @since 1.0.0
56
- * @category constructor
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 layers
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 { TypeIdError } from "@effect/platform/Error";
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 type ids
12
+ * @category Errors
11
13
  */
12
- export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform-browser/Clipboard");
14
+ export class ClipboardError extends /*#__PURE__*/Data.TaggedError("ClipboardError") {
15
+ [ErrorTypeId] = ErrorTypeId;
16
+ }
13
17
  /**
14
18
  * @since 1.0.0
15
- * @category type ids
19
+ * @category Service
16
20
  */
17
- export const ErrorTypeId = /*#__PURE__*/Symbol.for("@effect/platform-browser/Clipboard/ClipboardError");
21
+ export const Clipboard = /*#__PURE__*/ServiceMap.Service(TypeId);
18
22
  /**
19
23
  * @since 1.0.0
20
- * @category errors
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 layers
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":[]}