@effect/platform-bun 0.15.7 → 0.15.9
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/Worker/dist/effect-platform-bun-Worker.cjs.dev.js +13 -8
- package/Worker/dist/effect-platform-bun-Worker.cjs.prod.js +13 -8
- package/Worker/dist/effect-platform-bun-Worker.esm.js +12 -8
- package/WorkerRunner/dist/effect-platform-bun-WorkerRunner.cjs.dev.js +3 -1
- package/WorkerRunner/dist/effect-platform-bun-WorkerRunner.cjs.prod.js +3 -1
- package/WorkerRunner/dist/effect-platform-bun-WorkerRunner.esm.js +3 -1
- package/package.json +3 -3
- package/src/internal/worker.ts +22 -18
- package/src/internal/workerRunner.ts +3 -1
|
@@ -4,9 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var Worker = require('@effect/platform/Worker');
|
|
6
6
|
var WorkerError = require('@effect/platform/WorkerError');
|
|
7
|
-
var effect = require('effect');
|
|
8
7
|
var Effect = require('effect/Effect');
|
|
8
|
+
var Function = require('effect/Function');
|
|
9
9
|
var Layer = require('effect/Layer');
|
|
10
|
+
var Option = require('effect/Option');
|
|
10
11
|
var Queue = require('effect/Queue');
|
|
11
12
|
|
|
12
13
|
function _interopNamespace(e) {
|
|
@@ -30,6 +31,7 @@ function _interopNamespace(e) {
|
|
|
30
31
|
var Worker__namespace = /*#__PURE__*/_interopNamespace(Worker);
|
|
31
32
|
var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
|
|
32
33
|
var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
|
|
34
|
+
var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
|
|
33
35
|
var Queue__namespace = /*#__PURE__*/_interopNamespace(Queue);
|
|
34
36
|
|
|
35
37
|
const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
|
|
@@ -37,14 +39,18 @@ const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
|
|
|
37
39
|
spawn(worker_) {
|
|
38
40
|
return Effect__namespace.gen(function* (_) {
|
|
39
41
|
const port = worker_;
|
|
40
|
-
yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.async(resume => {
|
|
42
|
+
yield* _(Effect__namespace.addFinalizer(() => Function.pipe(Effect__namespace.async((resume, signal) => {
|
|
41
43
|
port.addEventListener("close", () => resume(Effect__namespace.unit), {
|
|
42
|
-
once: true
|
|
44
|
+
once: true,
|
|
45
|
+
signal
|
|
43
46
|
});
|
|
44
47
|
port.postMessage([1]);
|
|
45
|
-
}))
|
|
48
|
+
}), Effect__namespace.timeout(5000), Effect__namespace.tap(Option__namespace.match({
|
|
49
|
+
onNone: () => Effect__namespace.sync(() => port.terminate()),
|
|
50
|
+
onSome: _ => Effect__namespace.unit
|
|
51
|
+
})))));
|
|
46
52
|
const queue = yield* _(Queue__namespace.unbounded());
|
|
47
|
-
const
|
|
53
|
+
const run = Effect__namespace.async((resume, signal) => {
|
|
48
54
|
port.addEventListener("message", function (event) {
|
|
49
55
|
queue.unsafeOffer(event.data);
|
|
50
56
|
}, {
|
|
@@ -55,11 +61,10 @@ const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
|
|
|
55
61
|
}, {
|
|
56
62
|
signal
|
|
57
63
|
});
|
|
58
|
-
})
|
|
59
|
-
const join = effect.Fiber.join(fiber);
|
|
64
|
+
});
|
|
60
65
|
const send = (message, transfers) => Effect__namespace.sync(() => port.postMessage([0, message], transfers));
|
|
61
66
|
return {
|
|
62
|
-
|
|
67
|
+
run,
|
|
63
68
|
queue,
|
|
64
69
|
send
|
|
65
70
|
};
|
|
@@ -4,9 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var Worker = require('@effect/platform/Worker');
|
|
6
6
|
var WorkerError = require('@effect/platform/WorkerError');
|
|
7
|
-
var effect = require('effect');
|
|
8
7
|
var Effect = require('effect/Effect');
|
|
8
|
+
var Function = require('effect/Function');
|
|
9
9
|
var Layer = require('effect/Layer');
|
|
10
|
+
var Option = require('effect/Option');
|
|
10
11
|
var Queue = require('effect/Queue');
|
|
11
12
|
|
|
12
13
|
function _interopNamespace(e) {
|
|
@@ -30,6 +31,7 @@ function _interopNamespace(e) {
|
|
|
30
31
|
var Worker__namespace = /*#__PURE__*/_interopNamespace(Worker);
|
|
31
32
|
var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
|
|
32
33
|
var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
|
|
34
|
+
var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
|
|
33
35
|
var Queue__namespace = /*#__PURE__*/_interopNamespace(Queue);
|
|
34
36
|
|
|
35
37
|
const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
|
|
@@ -37,14 +39,18 @@ const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
|
|
|
37
39
|
spawn(worker_) {
|
|
38
40
|
return Effect__namespace.gen(function* (_) {
|
|
39
41
|
const port = worker_;
|
|
40
|
-
yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.async(resume => {
|
|
42
|
+
yield* _(Effect__namespace.addFinalizer(() => Function.pipe(Effect__namespace.async((resume, signal) => {
|
|
41
43
|
port.addEventListener("close", () => resume(Effect__namespace.unit), {
|
|
42
|
-
once: true
|
|
44
|
+
once: true,
|
|
45
|
+
signal
|
|
43
46
|
});
|
|
44
47
|
port.postMessage([1]);
|
|
45
|
-
}))
|
|
48
|
+
}), Effect__namespace.timeout(5000), Effect__namespace.tap(Option__namespace.match({
|
|
49
|
+
onNone: () => Effect__namespace.sync(() => port.terminate()),
|
|
50
|
+
onSome: _ => Effect__namespace.unit
|
|
51
|
+
})))));
|
|
46
52
|
const queue = yield* _(Queue__namespace.unbounded());
|
|
47
|
-
const
|
|
53
|
+
const run = Effect__namespace.async((resume, signal) => {
|
|
48
54
|
port.addEventListener("message", function (event) {
|
|
49
55
|
queue.unsafeOffer(event.data);
|
|
50
56
|
}, {
|
|
@@ -55,11 +61,10 @@ const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
|
|
|
55
61
|
}, {
|
|
56
62
|
signal
|
|
57
63
|
});
|
|
58
|
-
})
|
|
59
|
-
const join = effect.Fiber.join(fiber);
|
|
64
|
+
});
|
|
60
65
|
const send = (message, transfers) => Effect__namespace.sync(() => port.postMessage([0, message], transfers));
|
|
61
66
|
return {
|
|
62
|
-
|
|
67
|
+
run,
|
|
63
68
|
queue,
|
|
64
69
|
send
|
|
65
70
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as Worker from '@effect/platform/Worker';
|
|
2
2
|
export * from '@effect/platform/Worker';
|
|
3
3
|
import { WorkerError } from '@effect/platform/WorkerError';
|
|
4
|
-
import { Fiber } from 'effect';
|
|
5
4
|
import * as Effect from 'effect/Effect';
|
|
5
|
+
import { pipe } from 'effect/Function';
|
|
6
6
|
import * as Layer from 'effect/Layer';
|
|
7
|
+
import * as Option from 'effect/Option';
|
|
7
8
|
import * as Queue from 'effect/Queue';
|
|
8
9
|
|
|
9
10
|
const platformWorkerImpl = /*#__PURE__*/Worker.PlatformWorker.of({
|
|
@@ -11,14 +12,18 @@ const platformWorkerImpl = /*#__PURE__*/Worker.PlatformWorker.of({
|
|
|
11
12
|
spawn(worker_) {
|
|
12
13
|
return Effect.gen(function* (_) {
|
|
13
14
|
const port = worker_;
|
|
14
|
-
yield* _(Effect.addFinalizer(() => Effect.async(resume => {
|
|
15
|
+
yield* _(Effect.addFinalizer(() => pipe(Effect.async((resume, signal) => {
|
|
15
16
|
port.addEventListener("close", () => resume(Effect.unit), {
|
|
16
|
-
once: true
|
|
17
|
+
once: true,
|
|
18
|
+
signal
|
|
17
19
|
});
|
|
18
20
|
port.postMessage([1]);
|
|
19
|
-
}))
|
|
21
|
+
}), Effect.timeout(5000), Effect.tap(Option.match({
|
|
22
|
+
onNone: () => Effect.sync(() => port.terminate()),
|
|
23
|
+
onSome: _ => Effect.unit
|
|
24
|
+
})))));
|
|
20
25
|
const queue = yield* _(Queue.unbounded());
|
|
21
|
-
const
|
|
26
|
+
const run = Effect.async((resume, signal) => {
|
|
22
27
|
port.addEventListener("message", function (event) {
|
|
23
28
|
queue.unsafeOffer(event.data);
|
|
24
29
|
}, {
|
|
@@ -29,11 +34,10 @@ const platformWorkerImpl = /*#__PURE__*/Worker.PlatformWorker.of({
|
|
|
29
34
|
}, {
|
|
30
35
|
signal
|
|
31
36
|
});
|
|
32
|
-
})
|
|
33
|
-
const join = Fiber.join(fiber);
|
|
37
|
+
});
|
|
34
38
|
const send = (message, transfers) => Effect.sync(() => port.postMessage([0, message], transfers));
|
|
35
39
|
return {
|
|
36
|
-
|
|
40
|
+
run,
|
|
37
41
|
queue,
|
|
38
42
|
send
|
|
39
43
|
};
|
|
@@ -40,6 +40,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
|
|
|
40
40
|
}
|
|
41
41
|
const port = self;
|
|
42
42
|
const queue = yield* _(Queue__namespace.unbounded());
|
|
43
|
+
const fiberId = yield* _(Effect__namespace.fiberId);
|
|
43
44
|
const fiber = yield* _(Effect__namespace.async((resume, signal) => {
|
|
44
45
|
port.addEventListener("message", function (event) {
|
|
45
46
|
const message = event.data;
|
|
@@ -56,7 +57,8 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
|
|
|
56
57
|
}, {
|
|
57
58
|
signal
|
|
58
59
|
});
|
|
59
|
-
}), Effect__namespace.
|
|
60
|
+
}), Effect__namespace.forkDaemon);
|
|
61
|
+
yield* _(Effect__namespace.addFinalizer(() => fiber.interruptAsFork(fiberId)));
|
|
60
62
|
const send = (message, transfer) => Effect__namespace.sync(() => port.postMessage([1, message], {
|
|
61
63
|
transfer: transfer
|
|
62
64
|
}));
|
|
@@ -40,6 +40,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
|
|
|
40
40
|
}
|
|
41
41
|
const port = self;
|
|
42
42
|
const queue = yield* _(Queue__namespace.unbounded());
|
|
43
|
+
const fiberId = yield* _(Effect__namespace.fiberId);
|
|
43
44
|
const fiber = yield* _(Effect__namespace.async((resume, signal) => {
|
|
44
45
|
port.addEventListener("message", function (event) {
|
|
45
46
|
const message = event.data;
|
|
@@ -56,7 +57,8 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
|
|
|
56
57
|
}, {
|
|
57
58
|
signal
|
|
58
59
|
});
|
|
59
|
-
}), Effect__namespace.
|
|
60
|
+
}), Effect__namespace.forkDaemon);
|
|
61
|
+
yield* _(Effect__namespace.addFinalizer(() => fiber.interruptAsFork(fiberId)));
|
|
60
62
|
const send = (message, transfer) => Effect__namespace.sync(() => port.postMessage([1, message], {
|
|
61
63
|
transfer: transfer
|
|
62
64
|
}));
|
|
@@ -14,6 +14,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
|
|
|
14
14
|
}
|
|
15
15
|
const port = self;
|
|
16
16
|
const queue = yield* _(Queue.unbounded());
|
|
17
|
+
const fiberId = yield* _(Effect.fiberId);
|
|
17
18
|
const fiber = yield* _(Effect.async((resume, signal) => {
|
|
18
19
|
port.addEventListener("message", function (event) {
|
|
19
20
|
const message = event.data;
|
|
@@ -30,7 +31,8 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
|
|
|
30
31
|
}, {
|
|
31
32
|
signal
|
|
32
33
|
});
|
|
33
|
-
}), Effect.
|
|
34
|
+
}), Effect.forkDaemon);
|
|
35
|
+
yield* _(Effect.addFinalizer(() => fiber.interruptAsFork(fiberId)));
|
|
34
36
|
const send = (message, transfer) => Effect.sync(() => port.postMessage([1, message], {
|
|
35
37
|
transfer: transfer
|
|
36
38
|
}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform-bun",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.9",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"main": "dist/effect-platform-bun.cjs.js",
|
|
6
6
|
"module": "dist/effect-platform-bun.esm.js",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"sideEffects": false,
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@effect/platform": "^0.26.
|
|
34
|
-
"@effect/platform-node": "^0.27.
|
|
33
|
+
"@effect/platform": "^0.26.7",
|
|
34
|
+
"@effect/platform-node": "^0.27.9"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@effect/schema": "^0.46.1",
|
package/src/internal/worker.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as Worker from "@effect/platform/Worker"
|
|
2
2
|
import { WorkerError } from "@effect/platform/WorkerError"
|
|
3
|
-
import { Fiber } from "effect"
|
|
4
3
|
import * as Effect from "effect/Effect"
|
|
4
|
+
import { pipe } from "effect/Function"
|
|
5
5
|
import * as Layer from "effect/Layer"
|
|
6
|
+
import * as Option from "effect/Option"
|
|
6
7
|
import * as Queue from "effect/Queue"
|
|
7
8
|
|
|
8
9
|
const platformWorkerImpl = Worker.PlatformWorker.of({
|
|
@@ -12,31 +13,34 @@ const platformWorkerImpl = Worker.PlatformWorker.of({
|
|
|
12
13
|
const port = worker_ as globalThis.Worker
|
|
13
14
|
|
|
14
15
|
yield* _(Effect.addFinalizer(() =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
pipe(
|
|
17
|
+
Effect.async<never, never, void>((resume, signal) => {
|
|
18
|
+
port.addEventListener("close", () => resume(Effect.unit), { once: true, signal })
|
|
19
|
+
port.postMessage([1])
|
|
20
|
+
}),
|
|
21
|
+
Effect.timeout(5000),
|
|
22
|
+
Effect.tap(Option.match({
|
|
23
|
+
onNone: () => Effect.sync(() => port.terminate()),
|
|
24
|
+
onSome: (_) => Effect.unit
|
|
25
|
+
}))
|
|
26
|
+
)
|
|
19
27
|
))
|
|
20
28
|
|
|
21
29
|
const queue = yield* _(Queue.unbounded<Worker.BackingWorker.Message<O>>())
|
|
22
30
|
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}),
|
|
32
|
-
Effect.forkScoped
|
|
33
|
-
)
|
|
34
|
-
const join = Fiber.join(fiber)
|
|
31
|
+
const run = Effect.async<never, WorkerError, never>((resume, signal) => {
|
|
32
|
+
port.addEventListener("message", function(event) {
|
|
33
|
+
queue.unsafeOffer(event.data)
|
|
34
|
+
}, { signal })
|
|
35
|
+
port.addEventListener("error", function(event) {
|
|
36
|
+
resume(Effect.fail(WorkerError("unknown", event.message)))
|
|
37
|
+
}, { signal })
|
|
38
|
+
})
|
|
35
39
|
|
|
36
40
|
const send = (message: I, transfers?: ReadonlyArray<unknown>) =>
|
|
37
41
|
Effect.sync(() => port.postMessage([0, message], transfers as any))
|
|
38
42
|
|
|
39
|
-
return {
|
|
43
|
+
return { run, queue, send }
|
|
40
44
|
})
|
|
41
45
|
}
|
|
42
46
|
})
|
|
@@ -17,6 +17,7 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
|
|
|
17
17
|
}
|
|
18
18
|
const port = self
|
|
19
19
|
const queue = yield* _(Queue.unbounded<I>())
|
|
20
|
+
const fiberId = yield* _(Effect.fiberId)
|
|
20
21
|
const fiber = yield* _(
|
|
21
22
|
Effect.async<never, WorkerError, never>((resume, signal) => {
|
|
22
23
|
port.addEventListener("message", function(event) {
|
|
@@ -31,8 +32,9 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
|
|
|
31
32
|
resume(Effect.fail(WorkerError("unknown", error.message)))
|
|
32
33
|
}, { signal })
|
|
33
34
|
}),
|
|
34
|
-
Effect.
|
|
35
|
+
Effect.forkDaemon
|
|
35
36
|
)
|
|
37
|
+
yield* _(Effect.addFinalizer(() => fiber.interruptAsFork(fiberId)))
|
|
36
38
|
const send = (message: O, transfer?: ReadonlyArray<unknown>) =>
|
|
37
39
|
Effect.sync(() =>
|
|
38
40
|
port.postMessage([1, message], {
|