@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.
@@ -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 fiber = yield* _(Effect__namespace.async((resume, signal) => {
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
- }), Effect__namespace.forkScoped);
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
- join,
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 fiber = yield* _(Effect__namespace.async((resume, signal) => {
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
- }), Effect__namespace.forkScoped);
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
- join,
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 fiber = yield* _(Effect.async((resume, signal) => {
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
- }), Effect.forkScoped);
33
- const join = Fiber.join(fiber);
37
+ });
34
38
  const send = (message, transfers) => Effect.sync(() => port.postMessage([0, message], transfers));
35
39
  return {
36
- join,
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.forkScoped);
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.forkScoped);
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.forkScoped);
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.7",
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.5",
34
- "@effect/platform-node": "^0.27.7"
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",
@@ -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
- Effect.async<never, never, void>((resume) => {
16
- port.addEventListener("close", () => resume(Effect.unit), { once: true })
17
- port.postMessage([1])
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 fiber = yield* _(
24
- Effect.async<never, WorkerError, never>((resume, signal) => {
25
- port.addEventListener("message", function(event) {
26
- queue.unsafeOffer(event.data)
27
- }, { signal })
28
- port.addEventListener("error", function(event) {
29
- resume(Effect.fail(WorkerError("unknown", event.message)))
30
- }, { signal })
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 { join, queue, send }
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.forkScoped
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], {