@effect/platform-node 0.27.8 → 0.27.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.
@@ -5,7 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var Worker = require('@effect/platform/Worker');
6
6
  var WorkerError = require('@effect/platform/WorkerError');
7
7
  var Effect = require('effect/Effect');
8
+ var Function = require('effect/Function');
8
9
  var Layer = require('effect/Layer');
10
+ var Option = require('effect/Option');
9
11
  var Queue = require('effect/Queue');
10
12
 
11
13
  function _interopNamespace(e) {
@@ -29,6 +31,7 @@ function _interopNamespace(e) {
29
31
  var Worker__namespace = /*#__PURE__*/_interopNamespace(Worker);
30
32
  var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
31
33
  var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
34
+ var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
32
35
  var Queue__namespace = /*#__PURE__*/_interopNamespace(Queue);
33
36
 
34
37
  const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
@@ -36,14 +39,15 @@ const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
36
39
  spawn(worker_) {
37
40
  return Effect__namespace.gen(function* (_) {
38
41
  const worker = worker_;
39
- yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.suspend(() => {
40
- worker.postMessage([1]);
41
- return Effect__namespace.async(resume => {
42
- worker.once("exit", () => {
43
- resume(Effect__namespace.unit);
44
- });
42
+ yield* _(Effect__namespace.addFinalizer(() => Function.pipe(Effect__namespace.async(resume => {
43
+ worker.once("exit", () => {
44
+ resume(Effect__namespace.unit);
45
45
  });
46
- })));
46
+ worker.postMessage([1]);
47
+ }), Effect__namespace.timeout(5000), Effect__namespace.tap(Option__namespace.match({
48
+ onNone: () => Effect__namespace.promise(() => worker.terminate()),
49
+ onSome: _ => Effect__namespace.unit
50
+ })))));
47
51
  const queue = yield* _(Queue__namespace.unbounded());
48
52
  yield* _(Effect__namespace.addFinalizer(() => Queue__namespace.shutdown(queue)));
49
53
  const run = Effect__namespace.async(resume => {
@@ -5,7 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var Worker = require('@effect/platform/Worker');
6
6
  var WorkerError = require('@effect/platform/WorkerError');
7
7
  var Effect = require('effect/Effect');
8
+ var Function = require('effect/Function');
8
9
  var Layer = require('effect/Layer');
10
+ var Option = require('effect/Option');
9
11
  var Queue = require('effect/Queue');
10
12
 
11
13
  function _interopNamespace(e) {
@@ -29,6 +31,7 @@ function _interopNamespace(e) {
29
31
  var Worker__namespace = /*#__PURE__*/_interopNamespace(Worker);
30
32
  var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
31
33
  var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
34
+ var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
32
35
  var Queue__namespace = /*#__PURE__*/_interopNamespace(Queue);
33
36
 
34
37
  const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
@@ -36,14 +39,15 @@ const platformWorkerImpl = /*#__PURE__*/Worker__namespace.PlatformWorker.of({
36
39
  spawn(worker_) {
37
40
  return Effect__namespace.gen(function* (_) {
38
41
  const worker = worker_;
39
- yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.suspend(() => {
40
- worker.postMessage([1]);
41
- return Effect__namespace.async(resume => {
42
- worker.once("exit", () => {
43
- resume(Effect__namespace.unit);
44
- });
42
+ yield* _(Effect__namespace.addFinalizer(() => Function.pipe(Effect__namespace.async(resume => {
43
+ worker.once("exit", () => {
44
+ resume(Effect__namespace.unit);
45
45
  });
46
- })));
46
+ worker.postMessage([1]);
47
+ }), Effect__namespace.timeout(5000), Effect__namespace.tap(Option__namespace.match({
48
+ onNone: () => Effect__namespace.promise(() => worker.terminate()),
49
+ onSome: _ => Effect__namespace.unit
50
+ })))));
47
51
  const queue = yield* _(Queue__namespace.unbounded());
48
52
  yield* _(Effect__namespace.addFinalizer(() => Queue__namespace.shutdown(queue)));
49
53
  const run = Effect__namespace.async(resume => {
@@ -2,7 +2,9 @@ import * as Worker from '@effect/platform/Worker';
2
2
  export * from '@effect/platform/Worker';
3
3
  import { WorkerError } from '@effect/platform/WorkerError';
4
4
  import * as Effect from 'effect/Effect';
5
+ import { pipe } from 'effect/Function';
5
6
  import * as Layer from 'effect/Layer';
7
+ import * as Option from 'effect/Option';
6
8
  import * as Queue from 'effect/Queue';
7
9
 
8
10
  const platformWorkerImpl = /*#__PURE__*/Worker.PlatformWorker.of({
@@ -10,14 +12,15 @@ const platformWorkerImpl = /*#__PURE__*/Worker.PlatformWorker.of({
10
12
  spawn(worker_) {
11
13
  return Effect.gen(function* (_) {
12
14
  const worker = worker_;
13
- yield* _(Effect.addFinalizer(() => Effect.suspend(() => {
14
- worker.postMessage([1]);
15
- return Effect.async(resume => {
16
- worker.once("exit", () => {
17
- resume(Effect.unit);
18
- });
15
+ yield* _(Effect.addFinalizer(() => pipe(Effect.async(resume => {
16
+ worker.once("exit", () => {
17
+ resume(Effect.unit);
19
18
  });
20
- })));
19
+ worker.postMessage([1]);
20
+ }), Effect.timeout(5000), Effect.tap(Option.match({
21
+ onNone: () => Effect.promise(() => worker.terminate()),
22
+ onSome: _ => Effect.unit
23
+ })))));
21
24
  const queue = yield* _(Queue.unbounded());
22
25
  yield* _(Effect.addFinalizer(() => Queue.shutdown(queue)));
23
26
  const run = Effect.async(resume => {
@@ -42,6 +42,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
42
42
  }
43
43
  const port = WorkerThreads__namespace.parentPort;
44
44
  const queue = yield* _(Queue__namespace.unbounded());
45
+ const fiberId = yield* _(Effect__namespace.fiberId);
45
46
  const fiber = yield* _(Effect__namespace.async(resume => {
46
47
  port.on("message", message => {
47
48
  if (message[0] === 0) {
@@ -56,7 +57,8 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
56
57
  port.on("error", error => {
57
58
  resume(Effect__namespace.fail(WorkerError.WorkerError("unknown", error)));
58
59
  });
59
- }), Effect__namespace.forkScoped);
60
+ }), Effect__namespace.forkDaemon);
61
+ yield* _(Effect__namespace.addFinalizer(() => fiber.interruptAsFork(fiberId)));
60
62
  const send = (message, transfers) => Effect__namespace.sync(() => port.postMessage([1, message], transfers));
61
63
  // ready
62
64
  port.postMessage([0]);
@@ -42,6 +42,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
42
42
  }
43
43
  const port = WorkerThreads__namespace.parentPort;
44
44
  const queue = yield* _(Queue__namespace.unbounded());
45
+ const fiberId = yield* _(Effect__namespace.fiberId);
45
46
  const fiber = yield* _(Effect__namespace.async(resume => {
46
47
  port.on("message", message => {
47
48
  if (message[0] === 0) {
@@ -56,7 +57,8 @@ const platformRunnerImpl = /*#__PURE__*/Runner__namespace.PlatformRunner.of({
56
57
  port.on("error", error => {
57
58
  resume(Effect__namespace.fail(WorkerError.WorkerError("unknown", error)));
58
59
  });
59
- }), Effect__namespace.forkScoped);
60
+ }), Effect__namespace.forkDaemon);
61
+ yield* _(Effect__namespace.addFinalizer(() => fiber.interruptAsFork(fiberId)));
60
62
  const send = (message, transfers) => Effect__namespace.sync(() => port.postMessage([1, message], transfers));
61
63
  // ready
62
64
  port.postMessage([0]);
@@ -15,6 +15,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
15
15
  }
16
16
  const port = WorkerThreads.parentPort;
17
17
  const queue = yield* _(Queue.unbounded());
18
+ const fiberId = yield* _(Effect.fiberId);
18
19
  const fiber = yield* _(Effect.async(resume => {
19
20
  port.on("message", message => {
20
21
  if (message[0] === 0) {
@@ -29,7 +30,8 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
29
30
  port.on("error", error => {
30
31
  resume(Effect.fail(WorkerError("unknown", error)));
31
32
  });
32
- }), Effect.forkScoped);
33
+ }), Effect.forkDaemon);
34
+ yield* _(Effect.addFinalizer(() => fiber.interruptAsFork(fiberId)));
33
35
  const send = (message, transfers) => Effect.sync(() => port.postMessage([1, message], transfers));
34
36
  // ready
35
37
  port.postMessage([0]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-node",
3
- "version": "0.27.8",
3
+ "version": "0.27.9",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "main": "dist/effect-platform-node.cjs.js",
6
6
  "module": "dist/effect-platform-node.esm.js",
@@ -46,7 +46,7 @@
46
46
  "dependencies": {
47
47
  "busboy": "^1.6.0",
48
48
  "mime": "^3.0.0",
49
- "@effect/platform": "^0.26.6"
49
+ "@effect/platform": "^0.26.7"
50
50
  },
51
51
  "files": [
52
52
  "src",
@@ -1,7 +1,9 @@
1
1
  import * as Worker from "@effect/platform/Worker"
2
2
  import { WorkerError } from "@effect/platform/WorkerError"
3
3
  import * as Effect from "effect/Effect"
4
+ import { pipe } from "effect/Function"
4
5
  import * as Layer from "effect/Layer"
6
+ import * as Option from "effect/Option"
5
7
  import * as Queue from "effect/Queue"
6
8
  import type * as WorkerThreads from "node:worker_threads"
7
9
 
@@ -11,14 +13,19 @@ const platformWorkerImpl = Worker.PlatformWorker.of({
11
13
  return Effect.gen(function*(_) {
12
14
  const worker = worker_ as WorkerThreads.Worker
13
15
  yield* _(Effect.addFinalizer(() =>
14
- Effect.suspend(() => {
15
- worker.postMessage([1])
16
- return Effect.async<never, never, void>((resume) => {
16
+ pipe(
17
+ Effect.async<never, never, void>((resume) => {
17
18
  worker.once("exit", () => {
18
19
  resume(Effect.unit)
19
20
  })
20
- })
21
- })
21
+ worker.postMessage([1])
22
+ }),
23
+ Effect.timeout(5000),
24
+ Effect.tap(Option.match({
25
+ onNone: () => Effect.promise(() => worker.terminate()),
26
+ onSome: (_) => Effect.unit
27
+ }))
28
+ )
22
29
  ))
23
30
  const queue = yield* _(Queue.unbounded<Worker.BackingWorker.Message<O>>())
24
31
  yield* _(Effect.addFinalizer(() => Queue.shutdown(queue)))
@@ -16,6 +16,7 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
16
16
  }
17
17
  const port = WorkerThreads.parentPort
18
18
  const queue = yield* _(Queue.unbounded<I>())
19
+ const fiberId = yield* _(Effect.fiberId)
19
20
  const fiber = yield* _(
20
21
  Effect.async<never, WorkerError, never>((resume) => {
21
22
  port.on("message", (message: Runner.BackingRunner.Message<I>) => {
@@ -32,8 +33,9 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
32
33
  resume(Effect.fail(WorkerError("unknown", error)))
33
34
  })
34
35
  }),
35
- Effect.forkScoped
36
+ Effect.forkDaemon
36
37
  )
38
+ yield* _(Effect.addFinalizer(() => fiber.interruptAsFork(fiberId)))
37
39
  const send = (message: O, transfers?: ReadonlyArray<unknown>) =>
38
40
  Effect.sync(() => port.postMessage([1, message], transfers as any))
39
41
  // ready