@effect/platform-browser
Advanced tools
Comparing version
@@ -51,15 +51,20 @@ "use strict"; | ||
const queue = yield* _(Queue.unbounded()); | ||
const fiber = yield* _(Effect.async((resume, signal) => { | ||
port.addEventListener("message", function (event) { | ||
const fiber = yield* _(Effect.async(resume => { | ||
function onMessage(event) { | ||
queue.unsafeOffer(event.data); | ||
}, { | ||
signal | ||
}); | ||
port.addEventListener("error", function (event) { | ||
} | ||
function onError(event) { | ||
resume(Effect.fail((0, _WorkerError.WorkerError)("unknown", event.message))); | ||
}, { | ||
signal | ||
} | ||
port.addEventListener("message", onMessage); | ||
port.addEventListener("error", onError); | ||
return Effect.sync(() => { | ||
port.removeEventListener("message", onMessage); | ||
port.removeEventListener("error", onError); | ||
}); | ||
}), Effect.interruptible, Effect.forkScoped); | ||
const send = (message, transfers) => Effect.sync(() => port.postMessage([0, message], transfers)); | ||
const send = (message, transfers) => Effect.try({ | ||
try: () => port.postMessage([0, message], transfers), | ||
catch: error => (0, _WorkerError.WorkerError)("send", error.message) | ||
}); | ||
return { | ||
@@ -66,0 +71,0 @@ fiber, |
@@ -53,4 +53,4 @@ "use strict"; | ||
const fiberId = yield* _(Effect.fiberId); | ||
const fiber = yield* _(Effect.async((resume, signal) => { | ||
port.addEventListener("message", function (event) { | ||
const fiber = yield* _(Effect.async(resume => { | ||
function onMessage(event) { | ||
const message = event.data; | ||
@@ -62,14 +62,16 @@ if (message[0] === 0) { | ||
} | ||
}, { | ||
signal | ||
}); | ||
port.addEventListener("messageerror", function (error) { | ||
} | ||
function onMessageError(error) { | ||
resume(Effect.fail((0, _WorkerError.WorkerError)("decode", error.message))); | ||
}, { | ||
signal | ||
}); | ||
port.addEventListener("error", function (error) { | ||
} | ||
function onError(error) { | ||
resume(Effect.fail((0, _WorkerError.WorkerError)("unknown", error.message))); | ||
}, { | ||
signal | ||
} | ||
port.addEventListener("message", onMessage); | ||
port.addEventListener("messageerror", onMessageError); | ||
port.addEventListener("error", onError); | ||
return Effect.sync(() => { | ||
port.removeEventListener("message", onMessage); | ||
port.removeEventListener("messageerror", onMessageError); | ||
port.removeEventListener("error", onError); | ||
}); | ||
@@ -76,0 +78,0 @@ }), Effect.forkDaemon); |
@@ -20,15 +20,20 @@ import * as Worker from "@effect/platform/Worker"; | ||
const queue = yield* _(Queue.unbounded()); | ||
const fiber = yield* _(Effect.async((resume, signal) => { | ||
port.addEventListener("message", function (event) { | ||
const fiber = yield* _(Effect.async(resume => { | ||
function onMessage(event) { | ||
queue.unsafeOffer(event.data); | ||
}, { | ||
signal | ||
}); | ||
port.addEventListener("error", function (event) { | ||
} | ||
function onError(event) { | ||
resume(Effect.fail(WorkerError("unknown", event.message))); | ||
}, { | ||
signal | ||
} | ||
port.addEventListener("message", onMessage); | ||
port.addEventListener("error", onError); | ||
return Effect.sync(() => { | ||
port.removeEventListener("message", onMessage); | ||
port.removeEventListener("error", onError); | ||
}); | ||
}), Effect.interruptible, Effect.forkScoped); | ||
const send = (message, transfers) => Effect.sync(() => port.postMessage([0, message], transfers)); | ||
const send = (message, transfers) => Effect.try({ | ||
try: () => port.postMessage([0, message], transfers), | ||
catch: error => WorkerError("send", error.message) | ||
}); | ||
return { | ||
@@ -35,0 +40,0 @@ fiber, |
@@ -22,4 +22,4 @@ import { WorkerError } from "@effect/platform/WorkerError"; | ||
const fiberId = yield* _(Effect.fiberId); | ||
const fiber = yield* _(Effect.async((resume, signal) => { | ||
port.addEventListener("message", function (event) { | ||
const fiber = yield* _(Effect.async(resume => { | ||
function onMessage(event) { | ||
const message = event.data; | ||
@@ -31,14 +31,16 @@ if (message[0] === 0) { | ||
} | ||
}, { | ||
signal | ||
}); | ||
port.addEventListener("messageerror", function (error) { | ||
} | ||
function onMessageError(error) { | ||
resume(Effect.fail(WorkerError("decode", error.message))); | ||
}, { | ||
signal | ||
}); | ||
port.addEventListener("error", function (error) { | ||
} | ||
function onError(error) { | ||
resume(Effect.fail(WorkerError("unknown", error.message))); | ||
}, { | ||
signal | ||
} | ||
port.addEventListener("message", onMessage); | ||
port.addEventListener("messageerror", onMessageError); | ||
port.addEventListener("error", onError); | ||
return Effect.sync(() => { | ||
port.removeEventListener("message", onMessage); | ||
port.removeEventListener("messageerror", onMessageError); | ||
port.removeEventListener("error", onError); | ||
}); | ||
@@ -45,0 +47,0 @@ }), Effect.forkDaemon); |
{ | ||
"name": "@effect/platform-browser", | ||
"version": "0.18.2", | ||
"version": "0.18.3", | ||
"description": "Unified interfaces for common platform-specific services", | ||
@@ -13,3 +13,3 @@ "license": "MIT", | ||
"dependencies": { | ||
"@effect/platform": "0.30.2" | ||
"@effect/platform": "0.30.3" | ||
}, | ||
@@ -16,0 +16,0 @@ "peerDependencies": { |
@@ -25,9 +25,15 @@ import * as Worker from "@effect/platform/Worker" | ||
const fiber = yield* _( | ||
Effect.async<never, WorkerError, never>((resume, signal) => { | ||
port.addEventListener("message", function(event) { | ||
Effect.async<never, WorkerError, never>((resume) => { | ||
function onMessage(event: MessageEvent) { | ||
queue.unsafeOffer((event as MessageEvent).data) | ||
}, { signal }) | ||
port.addEventListener("error", function(event) { | ||
} | ||
function onError(event: ErrorEvent) { | ||
resume(Effect.fail(WorkerError("unknown", (event as ErrorEvent).message))) | ||
}, { signal }) | ||
} | ||
port.addEventListener("message", onMessage as any) | ||
port.addEventListener("error", onError as any) | ||
return Effect.sync(() => { | ||
port.removeEventListener("message", onMessage as any) | ||
port.removeEventListener("error", onError as any) | ||
}) | ||
}), | ||
@@ -39,3 +45,6 @@ Effect.interruptible, | ||
const send = (message: I, transfers?: ReadonlyArray<unknown>) => | ||
Effect.sync(() => port.postMessage([0, message], transfers as any)) | ||
Effect.try({ | ||
try: () => port.postMessage([0, message], transfers as any), | ||
catch: (error) => WorkerError("send", (error as any).message) | ||
}) | ||
@@ -42,0 +51,0 @@ return { fiber, queue, send } |
@@ -25,4 +25,4 @@ import { WorkerError } from "@effect/platform/WorkerError" | ||
const fiber = yield* _( | ||
Effect.async<never, WorkerError, never>((resume, signal) => { | ||
port.addEventListener("message", function(event) { | ||
Effect.async<never, WorkerError, never>((resume) => { | ||
function onMessage(event: MessageEvent) { | ||
const message = (event as MessageEvent).data as Runner.BackingRunner.Message<I> | ||
@@ -34,9 +34,17 @@ if (message[0] === 0) { | ||
} | ||
}, { signal }) | ||
port.addEventListener("messageerror", function(error) { | ||
} | ||
function onMessageError(error: ErrorEvent) { | ||
resume(Effect.fail(WorkerError("decode", (error as ErrorEvent).message))) | ||
}, { signal }) | ||
port.addEventListener("error", function(error) { | ||
} | ||
function onError(error: ErrorEvent) { | ||
resume(Effect.fail(WorkerError("unknown", (error as ErrorEvent).message))) | ||
}, { signal }) | ||
} | ||
port.addEventListener("message", onMessage as any) | ||
port.addEventListener("messageerror", onMessageError as any) | ||
port.addEventListener("error", onError as any) | ||
return Effect.sync(() => { | ||
port.removeEventListener("message", onMessage as any) | ||
port.removeEventListener("messageerror", onMessageError as any) | ||
port.removeEventListener("error", onError as any) | ||
}) | ||
}), | ||
@@ -43,0 +51,0 @@ Effect.forkDaemon |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
131521
2.13%2290
1.37%+ Added
- Removed
Updated