@effect/platform-browser 0.74.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
package/README.md CHANGED
@@ -1,7 +1 @@
1
1
  # `@effect/platform-browser`
2
-
3
- Provides browser-specific implementations for the abstractions defined in [`@effect/platform`](https://github.com/Effect-TS/effect/tree/main/packages/platform). This allows you to write platform-independent code that can seamlessly run in the browser, leveraging browser capabilities while keeping your application portable across multiple environments.
4
-
5
- ## Documentation
6
-
7
- - **API Reference**: [View the full documentation](https://effect-ts.github.io/effect/docs/platform-browser).
@@ -0,0 +1,49 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type { LazyArg } from "effect/Function";
3
+ import type * as Layer from "effect/Layer";
4
+ import * as ServiceMap from "effect/ServiceMap";
5
+ import * as HttpClient from "effect/unstable/http/HttpClient";
6
+ export {
7
+ /**
8
+ * @since 1.0.0
9
+ * @category Fetch
10
+ */
11
+ Fetch,
12
+ /**
13
+ * @since 1.0.0
14
+ * @category Fetch
15
+ */
16
+ layer as layerFetch,
17
+ /**
18
+ * @since 1.0.0
19
+ * @category Fetch
20
+ */
21
+ RequestInit } from "effect/unstable/http/FetchHttpClient";
22
+ /**
23
+ * @since 1.0.0
24
+ * @category Models
25
+ */
26
+ export type XHRResponseType = "arraybuffer" | "text";
27
+ /**
28
+ * @since 1.0.0
29
+ * @category References
30
+ */
31
+ export declare const CurrentXHRResponseType: ServiceMap.Reference<XHRResponseType>;
32
+ /**
33
+ * @since 1.0.0
34
+ * @category References
35
+ */
36
+ export declare const withXHRArrayBuffer: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
37
+ declare const XMLHttpRequest_base: ServiceMap.ServiceClass<XMLHttpRequest, "@effect/platform-browser/BrowserHttpClient/XMLHttpRequest", LazyArg<globalThis.XMLHttpRequest>>;
38
+ /**
39
+ * @since 1.0.0
40
+ * @category Services
41
+ */
42
+ export declare class XMLHttpRequest extends XMLHttpRequest_base {
43
+ }
44
+ /**
45
+ * @since 1.0.0
46
+ * @category Layers
47
+ */
48
+ export declare const layerXMLHttpRequest: Layer.Layer<HttpClient.HttpClient>;
49
+ //# sourceMappingURL=BrowserHttpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserHttpClient.d.ts","sourceRoot":"","sources":["../src/BrowserHttpClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAI/C,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAY7D,OAAO;AACL;;;GAGG;AACH,KAAK;AACL;;;GAGG;AACH,KAAK,IAAI,UAAU;AACnB;;;GAGG;AACH,WAAW,EACZ,MAAM,sCAAsC,CAAA;AAM7C;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,MAAM,CAAA;AAEpD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,SAAS,CAAC,eAAe,CAGxE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACxC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAKrB,CAAA;;AAEH;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAG4B;CAAG;AAwSnE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAElE,CAAA"}
@@ -1,28 +1,59 @@
1
- import * as Cookies from "@effect/platform/Cookies";
2
- import * as Headers from "@effect/platform/Headers";
3
- import * as Client from "@effect/platform/HttpClient";
4
- import * as Error from "@effect/platform/HttpClientError";
5
- import * as ClientResponse from "@effect/platform/HttpClientResponse";
6
- import * as IncomingMessage from "@effect/platform/HttpIncomingMessage";
7
- import * as UrlParams from "@effect/platform/UrlParams";
8
- import * as Context from "effect/Context";
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Cause from "effect/Cause";
9
5
  import * as Effect from "effect/Effect";
10
- import * as FiberRef from "effect/FiberRef";
11
- import { globalValue } from "effect/GlobalValue";
12
6
  import * as Inspectable from "effect/Inspectable";
13
- import * as Option from "effect/Option";
7
+ import * as Queue from "effect/Queue";
8
+ import * as ServiceMap from "effect/ServiceMap";
14
9
  import * as Stream from "effect/Stream";
10
+ import * as Cookies from "effect/unstable/http/Cookies";
11
+ import * as Headers from "effect/unstable/http/Headers";
12
+ import * as HttpClient from "effect/unstable/http/HttpClient";
13
+ import * as HttpClientError from "effect/unstable/http/HttpClientError";
14
+ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
15
+ import * as HttpIncomingMessage from "effect/unstable/http/HttpIncomingMessage";
16
+ import * as UrlParams from "effect/unstable/http/UrlParams";
15
17
  import * as HeaderParser from "multipasta/HeadersParser";
16
- /** @internal */
17
- export const xhrTagKey = "@effect/platform-browser/BrowserHttpClient/XMLHttpRequest";
18
- const xhrTag = /*#__PURE__*/Context.GenericTag(xhrTagKey);
19
- /** @internal */
20
- export const currentXHRResponseType = /*#__PURE__*/globalValue("@effect/platform-browser/BrowserHttpClient/currentXHRResponseType", () => FiberRef.unsafeMake("text"));
21
- /** @internal */
22
- export const withXHRArrayBuffer = effect => Effect.locally(effect, currentXHRResponseType, "arraybuffer");
23
- const makeXhr = () => new XMLHttpRequest();
24
- const makeXMLHttpRequest = /*#__PURE__*/Client.make((request, url, signal, fiber) => Effect.suspend(() => {
25
- const xhr = Context.getOrElse(fiber.getFiberRef(FiberRef.currentContext), xhrTag, () => makeXhr)();
18
+ // =============================================================================
19
+ // Fetch
20
+ // =============================================================================
21
+ export {
22
+ /**
23
+ * @since 1.0.0
24
+ * @category Fetch
25
+ */
26
+ Fetch,
27
+ /**
28
+ * @since 1.0.0
29
+ * @category Fetch
30
+ */
31
+ layer as layerFetch,
32
+ /**
33
+ * @since 1.0.0
34
+ * @category Fetch
35
+ */
36
+ RequestInit } from "effect/unstable/http/FetchHttpClient";
37
+ /**
38
+ * @since 1.0.0
39
+ * @category References
40
+ */
41
+ export const CurrentXHRResponseType = /*#__PURE__*/ServiceMap.Reference("@effect/platform-browser/BrowserHttpClient/CurrentXHRResponseType", {
42
+ defaultValue: () => "text"
43
+ });
44
+ /**
45
+ * @since 1.0.0
46
+ * @category References
47
+ */
48
+ export const withXHRArrayBuffer = self => Effect.provideService(self, CurrentXHRResponseType, "arraybuffer");
49
+ /**
50
+ * @since 1.0.0
51
+ * @category Services
52
+ */
53
+ export class XMLHttpRequest extends /*#__PURE__*/ServiceMap.Service()("@effect/platform-browser/BrowserHttpClient/XMLHttpRequest") {}
54
+ const makeXhrRequest = () => new globalThis.XMLHttpRequest();
55
+ const makeXmlHttpRequest = /*#__PURE__*/HttpClient.make((request, url, signal, fiber) => Effect.suspend(() => {
56
+ const xhr = ServiceMap.getOrElse(fiber.services, XMLHttpRequest, () => makeXhrRequest)();
26
57
  signal.addEventListener("abort", () => {
27
58
  xhr.abort();
28
59
  xhr.onreadystatechange = null;
@@ -30,11 +61,11 @@ const makeXMLHttpRequest = /*#__PURE__*/Client.make((request, url, signal, fiber
30
61
  once: true
31
62
  });
32
63
  xhr.open(request.method, url.toString(), true);
33
- xhr.responseType = fiber.getFiberRef(currentXHRResponseType);
64
+ xhr.responseType = fiber.getRef(CurrentXHRResponseType);
34
65
  Object.entries(request.headers).forEach(([k, v]) => {
35
66
  xhr.setRequestHeader(k, v);
36
67
  });
37
- return Effect.zipRight(sendBody(xhr, request), Effect.async(resume => {
68
+ return Effect.andThen(sendBody(xhr, request), Effect.callback(resume => {
38
69
  let sent = false;
39
70
  const onChange = () => {
40
71
  if (!sent && xhr.readyState >= 2) {
@@ -44,10 +75,11 @@ const makeXMLHttpRequest = /*#__PURE__*/Client.make((request, url, signal, fiber
44
75
  };
45
76
  xhr.onreadystatechange = onChange;
46
77
  xhr.onerror = _event => {
47
- resume(Effect.fail(new Error.RequestError({
48
- request,
49
- reason: "Transport",
50
- cause: xhr.statusText
78
+ resume(Effect.fail(new HttpClientError.HttpClientError({
79
+ reason: new HttpClientError.TransportError({
80
+ request,
81
+ cause: xhr.statusText
82
+ })
51
83
  })));
52
84
  };
53
85
  onChange();
@@ -66,32 +98,32 @@ const sendBody = (xhr, request) => {
66
98
  case "FormData":
67
99
  return Effect.sync(() => xhr.send(body.formData));
68
100
  case "Stream":
69
- return Effect.matchEffect(Stream.runFold(body.stream, new Uint8Array(0), (acc, chunk) => {
101
+ return Effect.matchEffect(Stream.runFold(body.stream, () => new Uint8Array(0), (acc, chunk) => {
70
102
  const next = new Uint8Array(acc.length + chunk.length);
71
103
  next.set(acc, 0);
72
104
  next.set(chunk, acc.length);
73
105
  return next;
74
106
  }), {
75
- onFailure: cause => Effect.fail(new Error.RequestError({
76
- request,
77
- reason: "Encode",
78
- cause
107
+ onFailure: cause => Effect.fail(new HttpClientError.HttpClientError({
108
+ reason: new HttpClientError.EncodeError({
109
+ request,
110
+ cause
111
+ })
79
112
  })),
80
113
  onSuccess: body => Effect.sync(() => xhr.send(body))
81
114
  });
82
115
  }
83
116
  };
84
117
  const encoder = /*#__PURE__*/new TextEncoder();
85
- /** @internal */
86
- export class IncomingMessageImpl extends Inspectable.Class {
118
+ class IncomingMessageImpl extends Inspectable.Class {
119
+ [HttpIncomingMessage.TypeId];
87
120
  source;
88
121
  onError;
89
- [IncomingMessage.TypeId];
90
122
  constructor(source, onError) {
91
123
  super();
124
+ this[HttpIncomingMessage.TypeId] = HttpIncomingMessage.TypeId;
92
125
  this.source = source;
93
126
  this.onError = onError;
94
- this[IncomingMessage.TypeId] = IncomingMessage.TypeId;
95
127
  this._rawHeaderString = source.getAllResponseHeaders();
96
128
  }
97
129
  _rawHeaderString;
@@ -123,14 +155,14 @@ export class IncomingMessageImpl extends Inspectable.Class {
123
155
  return this.cachedCookies = Cookies.fromSetCookie(this._rawHeaders["set-cookie"]);
124
156
  }
125
157
  get remoteAddress() {
126
- return Option.none();
158
+ return undefined;
127
159
  }
128
160
  _textEffect;
129
161
  get text() {
130
162
  if (this._textEffect) {
131
163
  return this._textEffect;
132
164
  }
133
- return this._textEffect = Effect.async(resume => {
165
+ return this._textEffect = Effect.callback(resume => {
134
166
  if (this.source.readyState === 4) {
135
167
  resume(Effect.succeed(this.source.responseText));
136
168
  return;
@@ -152,33 +184,35 @@ export class IncomingMessageImpl extends Inspectable.Class {
152
184
  }).pipe(Effect.cached, Effect.runSync);
153
185
  }
154
186
  get json() {
155
- return Effect.tryMap(this.text, {
156
- try: _ => _ === "" ? null : JSON.parse(_),
187
+ return Effect.flatMap(this.text, text => Effect.try({
188
+ try: () => text === "" ? null : JSON.parse(text),
157
189
  catch: this.onError
158
- });
190
+ }));
159
191
  }
160
192
  get urlParamsBody() {
161
- return Effect.flatMap(this.text, _ => Effect.try({
162
- try: () => UrlParams.fromInput(new URLSearchParams(_)),
193
+ return Effect.flatMap(this.text, text => Effect.try({
194
+ try: () => UrlParams.fromInput(new URLSearchParams(text)),
163
195
  catch: this.onError
164
196
  }));
165
197
  }
166
198
  get stream() {
167
- return Stream.async(emit => {
199
+ return Stream.callback(queue => {
168
200
  let offset = 0;
169
201
  const onReadyStateChange = () => {
170
202
  if (this.source.readyState === 3) {
171
- emit.single(encoder.encode(this.source.responseText.slice(offset)));
203
+ const encoded = encoder.encode(this.source.responseText.slice(offset));
204
+ Queue.offerUnsafe(queue, encoded);
172
205
  offset = this.source.responseText.length;
173
206
  } else if (this.source.readyState === 4) {
207
+ const encoded = encoder.encode(this.source.responseText.slice(offset));
174
208
  if (offset < this.source.responseText.length) {
175
- emit.single(encoder.encode(this.source.responseText.slice(offset)));
209
+ Queue.offerUnsafe(queue, encoded);
176
210
  }
177
- emit.end();
211
+ Queue.endUnsafe(queue);
178
212
  }
179
213
  };
180
214
  const onError = () => {
181
- emit.fail(this.onError(this.source.statusText));
215
+ Queue.failCauseUnsafe(queue, Cause.fail(this.onError(this.source.statusText)));
182
216
  };
183
217
  this.source.addEventListener("readystatechange", onReadyStateChange);
184
218
  this.source.addEventListener("error", onError);
@@ -194,7 +228,7 @@ export class IncomingMessageImpl extends Inspectable.Class {
194
228
  if (this._arrayBufferEffect) {
195
229
  return this._arrayBufferEffect;
196
230
  }
197
- return this._arrayBufferEffect = Effect.async(resume => {
231
+ return this._arrayBufferEffect = Effect.callback(resume => {
198
232
  if (this.source.readyState === 4) {
199
233
  resume(Effect.succeed(this.source.response));
200
234
  return;
@@ -223,17 +257,18 @@ export class IncomingMessageImpl extends Inspectable.Class {
223
257
  }
224
258
  }
225
259
  class ClientResponseImpl extends IncomingMessageImpl {
260
+ [HttpClientResponse.TypeId];
226
261
  request;
227
- [ClientResponse.TypeId];
228
262
  constructor(request, source) {
229
- super(source, cause => new Error.ResponseError({
230
- request,
231
- response: this,
232
- reason: "Decode",
233
- cause
263
+ super(source, cause => new HttpClientError.HttpClientError({
264
+ reason: new HttpClientError.DecodeError({
265
+ request,
266
+ response: this,
267
+ cause
268
+ })
234
269
  }));
235
270
  this.request = request;
236
- this[ClientResponse.TypeId] = ClientResponse.TypeId;
271
+ this[HttpClientResponse.TypeId] = HttpClientResponse.TypeId;
237
272
  }
238
273
  get status() {
239
274
  return this.source.status;
@@ -245,13 +280,16 @@ class ClientResponseImpl extends IncomingMessageImpl {
245
280
  return `ClientResponse(${this.status})`;
246
281
  }
247
282
  toJSON() {
248
- return IncomingMessage.inspect(this, {
283
+ return HttpIncomingMessage.inspect(this, {
249
284
  _id: "@effect/platform/HttpClientResponse",
250
285
  request: this.request.toJSON(),
251
286
  status: this.status
252
287
  });
253
288
  }
254
289
  }
255
- /** @internal */
256
- export const layerXMLHttpRequest = /*#__PURE__*/Client.layerMergedContext(/*#__PURE__*/Effect.succeed(makeXMLHttpRequest));
257
- //# sourceMappingURL=httpClient.js.map
290
+ /**
291
+ * @since 1.0.0
292
+ * @category Layers
293
+ */
294
+ export const layerXMLHttpRequest = /*#__PURE__*/HttpClient.layerMergedServices(/*#__PURE__*/Effect.succeed(makeXmlHttpRequest));
295
+ //# sourceMappingURL=BrowserHttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserHttpClient.js","names":["Cause","Effect","Inspectable","Queue","ServiceMap","Stream","Cookies","Headers","HttpClient","HttpClientError","HttpClientResponse","HttpIncomingMessage","UrlParams","HeaderParser","Fetch","layer","layerFetch","RequestInit","CurrentXHRResponseType","Reference","defaultValue","withXHRArrayBuffer","self","provideService","XMLHttpRequest","Service","makeXhrRequest","globalThis","makeXmlHttpRequest","make","request","url","signal","fiber","suspend","xhr","getOrElse","services","addEventListener","abort","onreadystatechange","once","open","method","toString","responseType","getRef","Object","entries","headers","forEach","k","v","setRequestHeader","andThen","sendBody","callback","resume","sent","onChange","readyState","succeed","ClientResponseImpl","onerror","_event","fail","reason","TransportError","cause","statusText","void","body","_tag","sync","send","formData","matchEffect","runFold","stream","Uint8Array","acc","chunk","next","length","set","onFailure","EncodeError","onSuccess","encoder","TextEncoder","IncomingMessageImpl","Class","TypeId","source","onError","constructor","_rawHeaderString","getAllResponseHeaders","_rawHeaders","_headers","empty","parser","result","encode","undefined","parsed","fromInput","cachedCookies","cookies","fromSetCookie","remoteAddress","_textEffect","text","responseText","onReadyStateChange","removeEventListener","pipe","cached","runSync","json","flatMap","try","JSON","parse","catch","urlParamsBody","URLSearchParams","queue","offset","encoded","slice","offerUnsafe","endUnsafe","failCauseUnsafe","_arrayBufferEffect","arrayBuffer","response","map","arr","byteLength","buffer","byteOffset","DecodeError","status","die","toJSON","inspect","_id","layerXMLHttpRequest","layerMergedServices"],"sources":["../src/BrowserHttpClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Layer from "effect/Layer";
5
+ import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";
6
+ /**
7
+ * Creates a `KeyValueStore` layer that uses the browser's `localStorage` api.
8
+ *
9
+ * Values are stored between sessions.
10
+ *
11
+ * @since 1.0.0
12
+ * @category Layers
13
+ */
14
+ export declare const layerLocalStorage: Layer.Layer<KeyValueStore.KeyValueStore>;
15
+ /**
16
+ * Creates a `KeyValueStore` layer that uses the browser's `sessionStorage` api.
17
+ *
18
+ * Values are stored only for the current session.
19
+ *
20
+ * @since 1.0.0
21
+ * @category Layers
22
+ */
23
+ export declare const layerSessionStorage: Layer.Layer<KeyValueStore.KeyValueStore>;
24
+ //# sourceMappingURL=BrowserKeyValueStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserKeyValueStore.d.ts","sourceRoot":"","sources":["../src/BrowserKeyValueStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,aAAa,MAAM,2CAA2C,CAAA;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAEtE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAExE,CAAA"}
@@ -0,0 +1,20 @@
1
+ import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";
2
+ /**
3
+ * Creates a `KeyValueStore` layer that uses the browser's `localStorage` api.
4
+ *
5
+ * Values are stored between sessions.
6
+ *
7
+ * @since 1.0.0
8
+ * @category Layers
9
+ */
10
+ export const layerLocalStorage = /*#__PURE__*/KeyValueStore.layerStorage(() => globalThis.localStorage);
11
+ /**
12
+ * Creates a `KeyValueStore` layer that uses the browser's `sessionStorage` api.
13
+ *
14
+ * Values are stored only for the current session.
15
+ *
16
+ * @since 1.0.0
17
+ * @category Layers
18
+ */
19
+ export const layerSessionStorage = /*#__PURE__*/KeyValueStore.layerStorage(() => globalThis.sessionStorage);
20
+ //# sourceMappingURL=BrowserKeyValueStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserKeyValueStore.js","names":["KeyValueStore","layerLocalStorage","layerStorage","globalThis","localStorage","layerSessionStorage","sessionStorage"],"sources":["../src/BrowserKeyValueStore.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,aAAa,MAAM,2CAA2C;AAE1E;;;;;;;;AAQA,OAAO,MAAMC,iBAAiB,gBAA6CD,aAAa,CAACE,YAAY,CAAC,MACpGC,UAAU,CAACC,YAAY,CACxB;AAED;;;;;;;;AAQA,OAAO,MAAMC,mBAAmB,gBAA6CL,aAAa,CAACE,YAAY,CAAC,MACtGC,UAAU,CAACG,cAAc,CAC1B","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Effect from "effect/Effect";
5
+ import { type Teardown } from "effect/Runtime";
6
+ /**
7
+ * @since 1.0.0
8
+ * @category Runtime
9
+ */
10
+ export declare const runMain: {
11
+ /**
12
+ * @since 1.0.0
13
+ * @category Runtime
14
+ */
15
+ (options?: {
16
+ readonly disableErrorReporting?: boolean | undefined;
17
+ readonly teardown?: Teardown | undefined;
18
+ }): <E, A>(effect: Effect.Effect<A, E>) => void;
19
+ /**
20
+ * @since 1.0.0
21
+ * @category Runtime
22
+ */
23
+ <E, A>(effect: Effect.Effect<A, E>, options?: {
24
+ readonly disableErrorReporting?: boolean | undefined;
25
+ readonly teardown?: Teardown | undefined;
26
+ }): void;
27
+ };
28
+ //# sourceMappingURL=BrowserRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserRuntime.d.ts","sourceRoot":"","sources":["../src/BrowserRuntime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB;;;OAGG;IACH,CACE,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;KACzC,GACA,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9C;;;OAGG;IACH,CAAC,CAAC,EAAE,CAAC,EACH,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;KACzC,GACA,IAAI,CAAA;CAKP,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { makeRunMain } from "effect/Runtime";
2
+ /**
3
+ * @since 1.0.0
4
+ * @category Runtime
5
+ */
6
+ export const runMain = /*#__PURE__*/makeRunMain(({
7
+ fiber
8
+ }) => {
9
+ globalThis.addEventListener("beforeunload", () => {
10
+ fiber.interruptUnsafe(fiber.id);
11
+ });
12
+ });
13
+ //# sourceMappingURL=BrowserRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserRuntime.js","names":["makeRunMain","runMain","fiber","globalThis","addEventListener","interruptUnsafe","id"],"sources":["../src/BrowserRuntime.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,WAAW,QAAuB,gBAAgB;AAE3D;;;;AAIA,OAAO,MAAMC,OAAO,gBAsBhBD,WAAW,CAAC,CAAC;EAAEE;AAAK,CAAE,KAAI;EAC5BC,UAAU,CAACC,gBAAgB,CAAC,cAAc,EAAE,MAAK;IAC/CF,KAAK,CAACG,eAAe,CAACH,KAAK,CAACI,EAAE,CAAC;EACjC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,20 +1,20 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Socket from "@effect/platform/Socket";
5
4
  import * as Layer from "effect/Layer";
5
+ import * as Socket from "effect/unstable/socket/Socket";
6
6
  /**
7
7
  * @since 1.0.0
8
- * @category layers
8
+ * @category Layers
9
9
  */
10
10
  export declare const layerWebSocket: (url: string, options?: {
11
11
  readonly closeCodeIsError?: (code: number) => boolean;
12
12
  }) => Layer.Layer<Socket.Socket>;
13
13
  /**
14
- * A WebSocket constructor that uses globalThis.WebSocket.
14
+ * A WebSocket constructor that uses `globalThis.WebSocket`.
15
15
  *
16
16
  * @since 1.0.0
17
- * @category layers
17
+ * @category Layers
18
18
  */
19
19
  export declare const layerWebSocketConstructor: Layer.Layer<Socket.WebSocketConstructor>;
20
20
  //# sourceMappingURL=BrowserSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserSocket.d.ts","sourceRoot":"","sources":["../src/BrowserSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,UAAU;IACpD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACtD,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAG1B,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CACvC,CAAA"}
@@ -1,18 +1,18 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Socket from "@effect/platform/Socket";
5
4
  import * as Layer from "effect/Layer";
5
+ import * as Socket from "effect/unstable/socket/Socket";
6
6
  /**
7
7
  * @since 1.0.0
8
- * @category layers
8
+ * @category Layers
9
9
  */
10
- export const layerWebSocket = (url, options) => Layer.scoped(Socket.Socket, Socket.makeWebSocket(url, options)).pipe(Layer.provide(layerWebSocketConstructor));
10
+ export const layerWebSocket = (url, options) => Layer.effect(Socket.Socket, Socket.makeWebSocket(url, options)).pipe(Layer.provide(layerWebSocketConstructor));
11
11
  /**
12
- * A WebSocket constructor that uses globalThis.WebSocket.
12
+ * A WebSocket constructor that uses `globalThis.WebSocket`.
13
13
  *
14
14
  * @since 1.0.0
15
- * @category layers
15
+ * @category Layers
16
16
  */
17
17
  export const layerWebSocketConstructor = Socket.layerWebSocketConstructorGlobal;
18
18
  //# sourceMappingURL=BrowserSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserSocket.js","names":["Layer","Socket","layerWebSocket","url","options","effect","makeWebSocket","pipe","provide","layerWebSocketConstructor","layerWebSocketConstructorGlobal"],"sources":["../src/BrowserSocket.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD;;;;AAIA,OAAO,MAAMC,cAAc,GAAGA,CAACC,GAAW,EAAEC,OAE3C,KACCJ,KAAK,CAACK,MAAM,CAACJ,MAAM,CAACA,MAAM,EAAEA,MAAM,CAACK,aAAa,CAACH,GAAG,EAAEC,OAAO,CAAC,CAAC,CAACG,IAAI,CAClEP,KAAK,CAACQ,OAAO,CAACC,yBAAyB,CAAC,CACzC;AAEH;;;;;;AAMA,OAAO,MAAMA,yBAAyB,GACpCR,MAAM,CAACS,+BAA+B","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Stream from "effect/Stream";
5
+ /**
6
+ * Creates a `Stream` from `window.addEventListener`.
7
+ *
8
+ * 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` field.
10
+ *
11
+ * @since 1.0.0
12
+ * @category Streams
13
+ */
14
+ export declare const fromEventListenerWindow: <K extends keyof WindowEventMap>(type: K, options?: boolean | {
15
+ readonly capture?: boolean;
16
+ readonly passive?: boolean;
17
+ readonly once?: boolean;
18
+ readonly bufferSize?: number | undefined;
19
+ } | undefined) => Stream.Stream<WindowEventMap[K], never, never>;
20
+ /**
21
+ * Creates a `Stream` from `document.addEventListener`.
22
+ *
23
+ * 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` field.
25
+ *
26
+ * @since 1.0.0
27
+ * @category Streams
28
+ */
29
+ export declare const fromEventListenerDocument: <K extends keyof DocumentEventMap>(type: K, options?: boolean | {
30
+ readonly capture?: boolean;
31
+ readonly passive?: boolean;
32
+ readonly once?: boolean;
33
+ readonly bufferSize?: number | undefined;
34
+ } | undefined) => Stream.Stream<DocumentEventMap[K], never, never>;
35
+ //# sourceMappingURL=BrowserStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStream.d.ts","sourceRoot":"","sources":["../src/BrowserStream.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,cAAc,EACpE,MAAM,CAAC,EACP,UAAU,OAAO,GAAG;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,GAAG,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAuE,CAAA;AAEvH;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,gBAAgB,EACxE,MAAM,CAAC,EACP,UAAU,OAAO,GAAG;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,GAAG,SAAS,KACZ,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CACsB,CAAA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Stream from "effect/Stream";
5
+ /**
6
+ * Creates a `Stream` from `window.addEventListener`.
7
+ *
8
+ * 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` field.
10
+ *
11
+ * @since 1.0.0
12
+ * @category Streams
13
+ */
14
+ export const fromEventListenerWindow = (type, options) => Stream.fromEventListener(window, type, options);
15
+ /**
16
+ * Creates a `Stream` from `document.addEventListener`.
17
+ *
18
+ * 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` field.
20
+ *
21
+ * @since 1.0.0
22
+ * @category Streams
23
+ */
24
+ export const fromEventListenerDocument = (type, options) => Stream.fromEventListener(document, type, options);
25
+ //# sourceMappingURL=BrowserStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStream.js","names":["Stream","fromEventListenerWindow","type","options","fromEventListener","window","fromEventListenerDocument","document"],"sources":["../src/BrowserStream.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;;;;;AASA,OAAO,MAAMC,uBAAuB,GAAGA,CACrCC,IAAO,EACPC,OAKa,KACsCH,MAAM,CAACI,iBAAiB,CAAoBC,MAAM,EAAEH,IAAI,EAAEC,OAAO,CAAC;AAEvH;;;;;;;;;AASA,OAAO,MAAMG,yBAAyB,GAAGA,CACvCJ,IAAO,EACPC,OAKa,KAEbH,MAAM,CAACI,iBAAiB,CAAsBG,QAAQ,EAAEL,IAAI,EAAEC,OAAO,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as Worker from "effect/unstable/workers/Worker";
3
+ /**
4
+ * @since 1.0.0
5
+ * @category Layers
6
+ */
7
+ export declare const layer: (spawn: (id: number) => Worker | SharedWorker | MessagePort) => Layer.Layer<Worker.WorkerPlatform | Worker.Spawner>;
8
+ /**
9
+ * @since 1.0.0
10
+ * @category Layers
11
+ */
12
+ export declare const layerPlatform: Layer.Layer<Worker.WorkerPlatform>;
13
+ //# sourceMappingURL=BrowserWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../src/BrowserWorker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAA;AAGxD;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,KACzD,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAIlD,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CA2C5D,CAAA"}