@effect/platform-browser 0.0.0-snapshot-c0ae728e57df2c572ea803e1bb7121088cd67b49
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/Clipboard/package.json +6 -0
- package/Effectify/package.json +6 -0
- package/Error/package.json +6 -0
- package/HttpClient/package.json +6 -0
- package/KeyValueStore/package.json +6 -0
- package/LICENSE +21 -0
- package/Path/package.json +6 -0
- package/README.md +64 -0
- package/Runtime/package.json +6 -0
- package/Transferable/package.json +6 -0
- package/Worker/package.json +6 -0
- package/WorkerRunner/package.json +6 -0
- package/dist/cjs/Clipboard.js +54 -0
- package/dist/cjs/Clipboard.js.map +1 -0
- package/dist/cjs/Effectify.js +13 -0
- package/dist/cjs/Effectify.js.map +1 -0
- package/dist/cjs/Error.js +25 -0
- package/dist/cjs/Error.js.map +1 -0
- package/dist/cjs/HttpClient.js +46 -0
- package/dist/cjs/HttpClient.js.map +1 -0
- package/dist/cjs/KeyValueStore.js +73 -0
- package/dist/cjs/KeyValueStore.js.map +1 -0
- package/dist/cjs/Path.js +17 -0
- package/dist/cjs/Path.js.map +1 -0
- package/dist/cjs/Runtime.js +38 -0
- package/dist/cjs/Runtime.js.map +1 -0
- package/dist/cjs/Transferable.js +17 -0
- package/dist/cjs/Transferable.js.map +1 -0
- package/dist/cjs/Worker.js +87 -0
- package/dist/cjs/Worker.js.map +1 -0
- package/dist/cjs/WorkerRunner.js +69 -0
- package/dist/cjs/WorkerRunner.js.map +1 -0
- package/dist/cjs/index.js +52 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/clipboard.js +88 -0
- package/dist/cjs/internal/clipboard.js.map +1 -0
- package/dist/cjs/internal/keyValueStore.js +128 -0
- package/dist/cjs/internal/keyValueStore.js.map +1 -0
- package/dist/cjs/internal/runtime.js +47 -0
- package/dist/cjs/internal/runtime.js.map +1 -0
- package/dist/cjs/internal/worker.js +89 -0
- package/dist/cjs/internal/worker.js.map +1 -0
- package/dist/cjs/internal/workerRunner.js +101 -0
- package/dist/cjs/internal/workerRunner.js.map +1 -0
- package/dist/dts/Clipboard.d.ts +37 -0
- package/dist/dts/Clipboard.d.ts.map +1 -0
- package/dist/dts/Effectify.d.ts +19 -0
- package/dist/dts/Effectify.d.ts.map +1 -0
- package/dist/dts/Error.d.ts +31 -0
- package/dist/dts/Error.d.ts.map +1 -0
- package/dist/dts/HttpClient.d.ts +61 -0
- package/dist/dts/HttpClient.d.ts.map +1 -0
- package/dist/dts/KeyValueStore.d.ts +19 -0
- package/dist/dts/KeyValueStore.d.ts.map +1 -0
- package/dist/dts/Path.d.ts +7 -0
- package/dist/dts/Path.d.ts.map +1 -0
- package/dist/dts/Runtime.d.ts +10 -0
- package/dist/dts/Runtime.d.ts.map +1 -0
- package/dist/dts/Transferable.d.ts +7 -0
- package/dist/dts/Transferable.d.ts.map +1 -0
- package/dist/dts/Worker.d.ts +46 -0
- package/dist/dts/Worker.d.ts.map +1 -0
- package/dist/dts/WorkerRunner.d.ts +30 -0
- package/dist/dts/WorkerRunner.d.ts.map +1 -0
- package/dist/dts/index.d.ts +51 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/clipboard.d.ts +2 -0
- package/dist/dts/internal/clipboard.d.ts.map +1 -0
- package/dist/dts/internal/keyValueStore.d.ts +2 -0
- package/dist/dts/internal/keyValueStore.d.ts.map +1 -0
- package/dist/dts/internal/runtime.d.ts +2 -0
- package/dist/dts/internal/runtime.d.ts.map +1 -0
- package/dist/dts/internal/worker.d.ts +2 -0
- package/dist/dts/internal/worker.d.ts.map +1 -0
- package/dist/dts/internal/workerRunner.d.ts +2 -0
- package/dist/dts/internal/workerRunner.d.ts.map +1 -0
- package/dist/esm/Clipboard.js +22 -0
- package/dist/esm/Clipboard.js.map +1 -0
- package/dist/esm/Effectify.js +10 -0
- package/dist/esm/Effectify.js.map +1 -0
- package/dist/esm/Error.js +20 -0
- package/dist/esm/Error.js.map +1 -0
- package/dist/esm/HttpClient.js +61 -0
- package/dist/esm/HttpClient.js.map +1 -0
- package/dist/esm/KeyValueStore.js +25 -0
- package/dist/esm/KeyValueStore.js.map +1 -0
- package/dist/esm/Path.js +7 -0
- package/dist/esm/Path.js.map +1 -0
- package/dist/esm/Runtime.js +7 -0
- package/dist/esm/Runtime.js.map +1 -0
- package/dist/esm/Transferable.js +7 -0
- package/dist/esm/Transferable.js.map +1 -0
- package/dist/esm/Worker.js +36 -0
- package/dist/esm/Worker.js.map +1 -0
- package/dist/esm/WorkerRunner.js +21 -0
- package/dist/esm/WorkerRunner.js.map +1 -0
- package/dist/esm/index.js +51 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/clipboard.js +56 -0
- package/dist/esm/internal/clipboard.js.map +1 -0
- package/dist/esm/internal/keyValueStore.js +97 -0
- package/dist/esm/internal/keyValueStore.js.map +1 -0
- package/dist/esm/internal/runtime.js +15 -0
- package/dist/esm/internal/runtime.js.map +1 -0
- package/dist/esm/internal/worker.js +58 -0
- package/dist/esm/internal/worker.js.map +1 -0
- package/dist/esm/internal/workerRunner.js +68 -0
- package/dist/esm/internal/workerRunner.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +110 -0
- package/src/Clipboard.ts +44 -0
- package/src/Effectify.ts +22 -0
- package/src/Error.ts +34 -0
- package/src/HttpClient.ts +62 -0
- package/src/KeyValueStore.ts +27 -0
- package/src/Path.ts +7 -0
- package/src/Runtime.ts +11 -0
- package/src/Transferable.ts +7 -0
- package/src/Worker.ts +64 -0
- package/src/WorkerRunner.ts +45 -0
- package/src/index.ts +59 -0
- package/src/internal/clipboard.ts +71 -0
- package/src/internal/keyValueStore.ts +130 -0
- package/src/internal/runtime.ts +20 -0
- package/src/internal/worker.ts +72 -0
- package/src/internal/workerRunner.ts +92 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { WorkerError } from "@effect/platform/WorkerError"
|
|
2
|
+
import * as Runner from "@effect/platform/WorkerRunner"
|
|
3
|
+
import type * as Schema from "@effect/schema/Schema"
|
|
4
|
+
import * as Cause from "effect/Cause"
|
|
5
|
+
import * as Effect from "effect/Effect"
|
|
6
|
+
import * as Layer from "effect/Layer"
|
|
7
|
+
import * as Queue from "effect/Queue"
|
|
8
|
+
import * as Schedule from "effect/Schedule"
|
|
9
|
+
import type * as Stream from "effect/Stream"
|
|
10
|
+
import type { WorkerRunner } from "../index.js"
|
|
11
|
+
|
|
12
|
+
const platformRunnerImpl = Runner.PlatformRunner.of({
|
|
13
|
+
[Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
|
|
14
|
+
start<I, O>(shutdown: Effect.Effect<void>) {
|
|
15
|
+
return Effect.gen(function*(_) {
|
|
16
|
+
const port = "postMessage" in self ?
|
|
17
|
+
self :
|
|
18
|
+
(yield* _(Effect.async<MessagePort, never, never>((resume, signal) => {
|
|
19
|
+
self.addEventListener("connect", function(event) {
|
|
20
|
+
const port = (event as MessageEvent).ports[0]
|
|
21
|
+
port.start()
|
|
22
|
+
resume(Effect.succeed(port))
|
|
23
|
+
}, { once: true, signal })
|
|
24
|
+
})))
|
|
25
|
+
const queue = yield* _(Queue.unbounded<I>())
|
|
26
|
+
yield* _(
|
|
27
|
+
Effect.async<never, WorkerError, never>((resume) => {
|
|
28
|
+
function onMessage(event: MessageEvent) {
|
|
29
|
+
const message = (event as MessageEvent).data as Runner.BackingRunner.Message<I>
|
|
30
|
+
if (message[0] === 0) {
|
|
31
|
+
queue.unsafeOffer(message[1])
|
|
32
|
+
} else {
|
|
33
|
+
Effect.runFork(shutdown)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function onMessageError(error: ErrorEvent) {
|
|
37
|
+
resume(Effect.fail(WorkerError("decode", error.message, error.error?.stack)))
|
|
38
|
+
}
|
|
39
|
+
function onError(error: ErrorEvent) {
|
|
40
|
+
resume(Effect.fail(WorkerError("unknown", error.message, error.error?.stack)))
|
|
41
|
+
}
|
|
42
|
+
port.addEventListener("message", onMessage as any)
|
|
43
|
+
port.addEventListener("messageerror", onMessageError as any)
|
|
44
|
+
port.addEventListener("error", onError as any)
|
|
45
|
+
return Effect.sync(() => {
|
|
46
|
+
port.removeEventListener("message", onMessage as any)
|
|
47
|
+
port.removeEventListener("messageerror", onMessageError as any)
|
|
48
|
+
port.removeEventListener("error", onError as any)
|
|
49
|
+
})
|
|
50
|
+
}),
|
|
51
|
+
Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit : Effect.logDebug(cause)),
|
|
52
|
+
Effect.retry(Schedule.forever),
|
|
53
|
+
Effect.annotateLogs({
|
|
54
|
+
package: "@effect/platform-browser",
|
|
55
|
+
module: "WorkerRunner"
|
|
56
|
+
}),
|
|
57
|
+
Effect.interruptible,
|
|
58
|
+
Effect.forkScoped
|
|
59
|
+
)
|
|
60
|
+
const send = (message: O, transfer?: ReadonlyArray<unknown>) =>
|
|
61
|
+
Effect.sync(() =>
|
|
62
|
+
port.postMessage([1, message], {
|
|
63
|
+
transfer: transfer as any
|
|
64
|
+
})
|
|
65
|
+
)
|
|
66
|
+
// ready
|
|
67
|
+
port.postMessage([0])
|
|
68
|
+
return { queue, send }
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
/** @internal */
|
|
74
|
+
export const layerPlatform = Layer.succeed(Runner.PlatformRunner, platformRunnerImpl)
|
|
75
|
+
|
|
76
|
+
/** @internal */
|
|
77
|
+
export const layer = <I, R, E, O>(
|
|
78
|
+
process: (request: I) => Stream.Stream<O, E, R>,
|
|
79
|
+
options?: Runner.Runner.Options<I, E, O>
|
|
80
|
+
): Layer.Layer<never, WorkerError, R> => Layer.provide(Runner.layer(process, options), layerPlatform)
|
|
81
|
+
|
|
82
|
+
/** @internal */
|
|
83
|
+
export const layerSerialized = <
|
|
84
|
+
A extends Schema.TaggedRequest.Any,
|
|
85
|
+
I,
|
|
86
|
+
R,
|
|
87
|
+
Handlers extends WorkerRunner.SerializedRunner.Handlers<A>
|
|
88
|
+
>(
|
|
89
|
+
schema: Schema.Schema<A, I, R>,
|
|
90
|
+
handlers: Handlers
|
|
91
|
+
): Layer.Layer<never, WorkerError, R | WorkerRunner.SerializedRunner.HandlersContext<Handlers>> =>
|
|
92
|
+
Layer.provide(Runner.layerSerialized(schema, handlers), layerPlatform)
|