@effect/platform-node 0.76.20 → 0.76.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWorker.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","layerManager","exports","layerWorker","layer","layerPlatform"],"sources":["../../src/NodeWorker.ts"],"sourcesContent":[null],"mappings":";;;;;;AAMA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEhD;;;;AAIO,MAAMW,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAsCvB,QAAQ,CAACuB,YAAY;AAEpF;;;;AAIO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAuCzB,QAAQ,CAACyB,WAAW;AAEnF;;;;AAIO,MAAMC,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAEwC1B,QAAQ,CAAC0B,KAAK;AAExE;;;;AAIO,MAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAEiC3B,QAAQ,CAAC2B,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"NodeWorker.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","layerManager","exports","layerWorker","layer","layerPlatform"],"sources":["../../src/NodeWorker.ts"],"sourcesContent":[null],"mappings":";;;;;;AAOA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAEhD;;;;AAIO,MAAMW,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAsCvB,QAAQ,CAACuB,YAAY;AAEpF;;;;AAIO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAuCzB,QAAQ,CAACyB,WAAW;AAEnF;;;;AAIO,MAAMC,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAEwC1B,QAAQ,CAAC0B,KAAK;AAExE;;;;AAIO,MAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAEiC3B,QAAQ,CAAC2B,aAAa","ignoreList":[]}
@@ -19,13 +19,26 @@ const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
19
19
  worker
20
20
  }) {
21
21
  return Effect.flatMap(Deferred.make(), exitDeferred => {
22
+ const thing = "postMessage" in worker ? {
23
+ postMessage(msg, t) {
24
+ worker.postMessage(msg, t);
25
+ },
26
+ kill: () => worker.terminate(),
27
+ worker
28
+ } : {
29
+ postMessage(msg, _) {
30
+ worker.send(msg);
31
+ },
32
+ kill: () => worker.kill("SIGKILL"),
33
+ worker
34
+ };
22
35
  worker.on("exit", () => {
23
36
  Deferred.unsafeDone(exitDeferred, Exit.void);
24
37
  });
25
38
  return Effect.as(Scope.addFinalizer(scope, Effect.suspend(() => {
26
- worker.postMessage([1]);
39
+ thing.postMessage([1]);
27
40
  return Deferred.await(exitDeferred);
28
- }).pipe(Effect.interruptible, Effect.timeout(5000), Effect.catchAllCause(() => Effect.sync(() => worker.terminate())))), worker);
41
+ }).pipe(Effect.interruptible, Effect.timeout(5000), Effect.catchAllCause(() => Effect.sync(() => thing.kill())))), thing);
29
42
  });
30
43
  },
31
44
  listen({
@@ -33,22 +46,22 @@ const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
33
46
  emit,
34
47
  port
35
48
  }) {
36
- port.on("message", message => {
49
+ port.worker.on("message", message => {
37
50
  emit(message);
38
51
  });
39
- port.on("messageerror", cause => {
52
+ port.worker.on("messageerror", cause => {
40
53
  Deferred.unsafeDone(deferred, new _WorkerError.WorkerError({
41
54
  reason: "decode",
42
55
  cause
43
56
  }));
44
57
  });
45
- port.on("error", cause => {
58
+ port.worker.on("error", cause => {
46
59
  Deferred.unsafeDone(deferred, new _WorkerError.WorkerError({
47
60
  reason: "unknown",
48
61
  cause
49
62
  }));
50
63
  });
51
- port.on("exit", code => {
64
+ port.worker.on("exit", code => {
52
65
  Deferred.unsafeDone(deferred, new _WorkerError.WorkerError({
53
66
  reason: "unknown",
54
67
  cause: new Error(`exited with code ${code}`)
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","names":["Worker","_interopRequireWildcard","require","_WorkerError","Deferred","Effect","Exit","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformWorkerImpl","makePlatform","setup","scope","worker","flatMap","make","exitDeferred","on","unsafeDone","void","as","addFinalizer","suspend","postMessage","await","pipe","interruptible","timeout","catchAllCause","sync","terminate","listen","deferred","emit","port","message","cause","WorkerError","reason","code","Error","layerWorker","exports","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner","layerPlatform"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"worker.js","names":["Worker","_interopRequireWildcard","require","_WorkerError","Deferred","Effect","Exit","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformWorkerImpl","makePlatform","setup","scope","worker","flatMap","make","exitDeferred","thing","postMessage","msg","kill","terminate","_","send","on","unsafeDone","void","as","addFinalizer","suspend","await","pipe","interruptible","timeout","catchAllCause","sync","listen","deferred","emit","port","message","cause","WorkerError","reason","code","Error","layerWorker","exports","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner","layerPlatform"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -22,14 +22,14 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
22
22
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
23
23
  start(closeLatch) {
24
24
  return Effect.gen(function* () {
25
- if (!WorkerThreads.parentPort) {
25
+ if (!WorkerThreads.parentPort && !process.send) {
26
26
  return yield* new _WorkerError.WorkerError({
27
27
  reason: "spawn",
28
- cause: new Error("not in a worker thread")
28
+ cause: new Error("not in a worker")
29
29
  });
30
30
  }
31
- const port = WorkerThreads.parentPort;
32
- const send = (_portId, message, transfers) => Effect.sync(() => port.postMessage([1, message], transfers));
31
+ const unsafeSend = WorkerThreads.parentPort ? (message, transfers) => WorkerThreads.parentPort.postMessage(message, transfers) : (message, _transfers) => process.send(message);
32
+ const send = (_portId, message, transfers) => Effect.sync(() => unsafeSend([1, message], transfers));
33
33
  const run = Effect.fnUntraced(function* (handler) {
34
34
  const runtime = (yield* Effect.interruptible(Effect.runtime())).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
35
35
  const fiberSet = yield* FiberSet.make();
@@ -39,7 +39,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
39
39
  Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)));
40
40
  }
41
41
  };
42
- port.on("message", message => {
42
+ (WorkerThreads.parentPort ?? process).on("message", message => {
43
43
  if (message[0] === 0) {
44
44
  const result = handler(0, message[1]);
45
45
  if (Effect.isEffect(result)) {
@@ -48,23 +48,29 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
48
48
  FiberSet.unsafeAdd(fiberSet, fiber);
49
49
  }
50
50
  } else {
51
- port.close();
51
+ if (WorkerThreads.parentPort) {
52
+ WorkerThreads.parentPort.close();
53
+ } else {
54
+ process.channel?.unref();
55
+ }
52
56
  Deferred.unsafeDone(closeLatch, Exit.void);
53
57
  }
54
58
  });
55
- port.on("messageerror", cause => {
56
- Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
57
- reason: "decode",
58
- cause
59
- }));
60
- });
61
- port.on("error", cause => {
62
- Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
63
- reason: "unknown",
64
- cause
65
- }));
66
- });
67
- port.postMessage([0]);
59
+ if (WorkerThreads.parentPort) {
60
+ WorkerThreads.parentPort.on("messageerror", cause => {
61
+ Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
62
+ reason: "decode",
63
+ cause
64
+ }));
65
+ });
66
+ WorkerThreads.parentPort.on("error", cause => {
67
+ Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
68
+ reason: "unknown",
69
+ cause
70
+ }));
71
+ });
72
+ }
73
+ unsafeSend([0]);
68
74
  });
69
75
  return {
70
76
  run,
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["_WorkerError","require","Runner","_interopRequireWildcard","Cause","Context","Deferred","Effect","Exit","FiberSet","Layer","Runtime","Scope","WorkerThreads","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","closeLatch","gen","parentPort","WorkerError","reason","cause","Error","port","send","_portId","message","transfers","sync","postMessage","run","fnUntraced","handler","runtime","interruptible","pipe","updateContext","omit","fiberSet","make","runFork","onExit","exit","_tag","isInterruptedOnly","unsafeDone","die","squash","on","result","isEffect","fiber","addObserver","unsafeAdd","close","void","layer","exports","succeed"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"workerRunner.js","names":["_WorkerError","require","Runner","_interopRequireWildcard","Cause","Context","Deferred","Effect","Exit","FiberSet","Layer","Runtime","Scope","WorkerThreads","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","closeLatch","gen","parentPort","process","send","WorkerError","reason","cause","Error","unsafeSend","message","transfers","postMessage","_transfers","_portId","sync","run","fnUntraced","handler","runtime","interruptible","pipe","updateContext","omit","fiberSet","make","runFork","onExit","exit","_tag","isInterruptedOnly","unsafeDone","die","squash","on","result","isEffect","fiber","addObserver","unsafeAdd","close","channel","unref","void","layer","exports","succeed"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Worker from "@effect/platform/Worker";
5
5
  import type * as Layer from "effect/Layer";
6
+ import type * as ChildProcess from "node:child_process";
6
7
  import type * as WorkerThreads from "node:worker_threads";
7
8
  /**
8
9
  * @since 1.0.0
@@ -18,10 +19,10 @@ export declare const layerWorker: Layer.Layer<Worker.PlatformWorker>;
18
19
  * @since 1.0.0
19
20
  * @category layers
20
21
  */
21
- export declare const layer: (spawn: (id: number) => WorkerThreads.Worker) => Layer.Layer<Worker.WorkerManager | Worker.Spawner>;
22
+ export declare const layer: (spawn: (id: number) => WorkerThreads.Worker | ChildProcess.ChildProcess) => Layer.Layer<Worker.WorkerManager | Worker.Spawner>;
22
23
  /**
23
24
  * @since 1.0.0
24
25
  * @category layers
25
26
  */
26
- export declare const layerPlatform: (spawn: (id: number) => WorkerThreads.Worker) => Layer.Layer<Worker.PlatformWorker | Worker.Spawner>;
27
+ export declare const layerPlatform: (spawn: (id: number) => WorkerThreads.Worker | ChildProcess.ChildProcess) => Layer.Layer<Worker.PlatformWorker | Worker.Spawner>;
27
28
  //# sourceMappingURL=NodeWorker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWorker.d.ts","sourceRoot":"","sources":["../../src/NodeWorker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,aAAa,MAAM,qBAAqB,CAAA;AAGzD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAyB,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAwB,CAAA;AAEnF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,KACxC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAkB,CAAA;AAExE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,KACxC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAA0B,CAAA"}
1
+ {"version":3,"file":"NodeWorker.d.ts","sourceRoot":"","sources":["../../src/NodeWorker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,YAAY,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,KAAK,aAAa,MAAM,qBAAqB,CAAA;AAGzD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAyB,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAwB,CAAA;AAEnF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY,KACpE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAkB,CAAA;AAExE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY,KACpE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAA0B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWorker.js","names":["internal","layerManager","layerWorker","layer","layerPlatform"],"sources":["../../src/NodeWorker.ts"],"sourcesContent":[null],"mappings":"AAMA,OAAO,KAAKA,QAAQ,MAAM,sBAAsB;AAEhD;;;;AAIA,OAAO,MAAMC,YAAY,GAAsCD,QAAQ,CAACC,YAAY;AAEpF;;;;AAIA,OAAO,MAAMC,WAAW,GAAuCF,QAAQ,CAACE,WAAW;AAEnF;;;;AAIA,OAAO,MAAMC,KAAK,GAEwCH,QAAQ,CAACG,KAAK;AAExE;;;;AAIA,OAAO,MAAMC,aAAa,GAEiCJ,QAAQ,CAACI,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"NodeWorker.js","names":["internal","layerManager","layerWorker","layer","layerPlatform"],"sources":["../../src/NodeWorker.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAO,KAAKA,QAAQ,MAAM,sBAAsB;AAEhD;;;;AAIA,OAAO,MAAMC,YAAY,GAAsCD,QAAQ,CAACC,YAAY;AAEpF;;;;AAIA,OAAO,MAAMC,WAAW,GAAuCF,QAAQ,CAACE,WAAW;AAEnF;;;;AAIA,OAAO,MAAMC,KAAK,GAEwCH,QAAQ,CAACG,KAAK;AAExE;;;;AAIA,OAAO,MAAMC,aAAa,GAEiCJ,QAAQ,CAACI,aAAa","ignoreList":[]}
@@ -11,13 +11,26 @@ const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
11
11
  worker
12
12
  }) {
13
13
  return Effect.flatMap(Deferred.make(), exitDeferred => {
14
+ const thing = "postMessage" in worker ? {
15
+ postMessage(msg, t) {
16
+ worker.postMessage(msg, t);
17
+ },
18
+ kill: () => worker.terminate(),
19
+ worker
20
+ } : {
21
+ postMessage(msg, _) {
22
+ worker.send(msg);
23
+ },
24
+ kill: () => worker.kill("SIGKILL"),
25
+ worker
26
+ };
14
27
  worker.on("exit", () => {
15
28
  Deferred.unsafeDone(exitDeferred, Exit.void);
16
29
  });
17
30
  return Effect.as(Scope.addFinalizer(scope, Effect.suspend(() => {
18
- worker.postMessage([1]);
31
+ thing.postMessage([1]);
19
32
  return Deferred.await(exitDeferred);
20
- }).pipe(Effect.interruptible, Effect.timeout(5000), Effect.catchAllCause(() => Effect.sync(() => worker.terminate())))), worker);
33
+ }).pipe(Effect.interruptible, Effect.timeout(5000), Effect.catchAllCause(() => Effect.sync(() => thing.kill())))), thing);
21
34
  });
22
35
  },
23
36
  listen({
@@ -25,22 +38,22 @@ const platformWorkerImpl = /*#__PURE__*/Worker.makePlatform()({
25
38
  emit,
26
39
  port
27
40
  }) {
28
- port.on("message", message => {
41
+ port.worker.on("message", message => {
29
42
  emit(message);
30
43
  });
31
- port.on("messageerror", cause => {
44
+ port.worker.on("messageerror", cause => {
32
45
  Deferred.unsafeDone(deferred, new WorkerError({
33
46
  reason: "decode",
34
47
  cause
35
48
  }));
36
49
  });
37
- port.on("error", cause => {
50
+ port.worker.on("error", cause => {
38
51
  Deferred.unsafeDone(deferred, new WorkerError({
39
52
  reason: "unknown",
40
53
  cause
41
54
  }));
42
55
  });
43
- port.on("exit", code => {
56
+ port.worker.on("exit", code => {
44
57
  Deferred.unsafeDone(deferred, new WorkerError({
45
58
  reason: "unknown",
46
59
  cause: new Error(`exited with code ${code}`)
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","names":["Worker","WorkerError","Deferred","Effect","Exit","Layer","Scope","platformWorkerImpl","makePlatform","setup","scope","worker","flatMap","make","exitDeferred","on","unsafeDone","void","as","addFinalizer","suspend","postMessage","await","pipe","interruptible","timeout","catchAllCause","sync","terminate","listen","deferred","emit","port","message","cause","reason","code","Error","layerWorker","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner","layerPlatform"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"worker.js","names":["Worker","WorkerError","Deferred","Effect","Exit","Layer","Scope","platformWorkerImpl","makePlatform","setup","scope","worker","flatMap","make","exitDeferred","thing","postMessage","msg","t","kill","terminate","_","send","on","unsafeDone","void","as","addFinalizer","suspend","await","pipe","interruptible","timeout","catchAllCause","sync","listen","deferred","emit","port","message","cause","reason","code","Error","layerWorker","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner","layerPlatform"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -14,14 +14,14 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
14
14
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
15
15
  start(closeLatch) {
16
16
  return Effect.gen(function* () {
17
- if (!WorkerThreads.parentPort) {
17
+ if (!WorkerThreads.parentPort && !process.send) {
18
18
  return yield* new WorkerError({
19
19
  reason: "spawn",
20
- cause: new Error("not in a worker thread")
20
+ cause: new Error("not in a worker")
21
21
  });
22
22
  }
23
- const port = WorkerThreads.parentPort;
24
- const send = (_portId, message, transfers) => Effect.sync(() => port.postMessage([1, message], transfers));
23
+ const unsafeSend = WorkerThreads.parentPort ? (message, transfers) => WorkerThreads.parentPort.postMessage(message, transfers) : (message, _transfers) => process.send(message);
24
+ const send = (_portId, message, transfers) => Effect.sync(() => unsafeSend([1, message], transfers));
25
25
  const run = Effect.fnUntraced(function* (handler) {
26
26
  const runtime = (yield* Effect.interruptible(Effect.runtime())).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
27
27
  const fiberSet = yield* FiberSet.make();
@@ -31,7 +31,7 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
31
31
  Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)));
32
32
  }
33
33
  };
34
- port.on("message", message => {
34
+ (WorkerThreads.parentPort ?? process).on("message", message => {
35
35
  if (message[0] === 0) {
36
36
  const result = handler(0, message[1]);
37
37
  if (Effect.isEffect(result)) {
@@ -40,23 +40,29 @@ const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
40
40
  FiberSet.unsafeAdd(fiberSet, fiber);
41
41
  }
42
42
  } else {
43
- port.close();
43
+ if (WorkerThreads.parentPort) {
44
+ WorkerThreads.parentPort.close();
45
+ } else {
46
+ process.channel?.unref();
47
+ }
44
48
  Deferred.unsafeDone(closeLatch, Exit.void);
45
49
  }
46
50
  });
47
- port.on("messageerror", cause => {
48
- Deferred.unsafeDone(closeLatch, new WorkerError({
49
- reason: "decode",
50
- cause
51
- }));
52
- });
53
- port.on("error", cause => {
54
- Deferred.unsafeDone(closeLatch, new WorkerError({
55
- reason: "unknown",
56
- cause
57
- }));
58
- });
59
- port.postMessage([0]);
51
+ if (WorkerThreads.parentPort) {
52
+ WorkerThreads.parentPort.on("messageerror", cause => {
53
+ Deferred.unsafeDone(closeLatch, new WorkerError({
54
+ reason: "decode",
55
+ cause
56
+ }));
57
+ });
58
+ WorkerThreads.parentPort.on("error", cause => {
59
+ Deferred.unsafeDone(closeLatch, new WorkerError({
60
+ reason: "unknown",
61
+ cause
62
+ }));
63
+ });
64
+ }
65
+ unsafeSend([0]);
60
66
  });
61
67
  return {
62
68
  run,
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Context","Deferred","Effect","Exit","FiberSet","Layer","Runtime","Scope","WorkerThreads","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","closeLatch","gen","parentPort","reason","cause","Error","port","send","_portId","message","transfers","sync","postMessage","run","fnUntraced","handler","runtime","interruptible","pipe","updateContext","omit","fiberSet","make","runFork","onExit","exit","_tag","isInterruptedOnly","unsafeDone","die","squash","on","result","isEffect","fiber","addObserver","unsafeAdd","close","void","layer","succeed"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Context","Deferred","Effect","Exit","FiberSet","Layer","Runtime","Scope","WorkerThreads","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","closeLatch","gen","parentPort","process","send","reason","cause","Error","unsafeSend","message","transfers","postMessage","_transfers","_portId","sync","run","fnUntraced","handler","runtime","interruptible","pipe","updateContext","omit","fiberSet","make","runFork","onExit","exit","_tag","isInterruptedOnly","unsafeDone","die","squash","on","result","isEffect","fiber","addObserver","unsafeAdd","close","channel","unref","void","layer","succeed"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-node",
3
- "version": "0.76.20",
3
+ "version": "0.76.22",
4
4
  "description": "Platform specific implementations for the Node.js runtime",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -13,14 +13,14 @@
13
13
  "mime": "^3.0.0",
14
14
  "undici": "^7.1.0",
15
15
  "ws": "^8.18.0",
16
- "@effect/platform-node-shared": "^0.30.20"
16
+ "@effect/platform-node-shared": "^0.30.22"
17
17
  },
18
18
  "peerDependencies": {
19
- "@effect/cluster": "^0.29.20",
20
- "@effect/platform": "^0.80.10",
21
- "@effect/rpc": "^0.55.15",
22
- "@effect/sql": "^0.33.10",
23
- "effect": "^3.14.10"
19
+ "@effect/cluster": "^0.29.22",
20
+ "@effect/platform": "^0.80.12",
21
+ "@effect/rpc": "^0.55.17",
22
+ "@effect/sql": "^0.33.12",
23
+ "effect": "^3.14.12"
24
24
  },
25
25
  "publishConfig": {
26
26
  "provenance": true
package/src/NodeWorker.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Worker from "@effect/platform/Worker"
5
5
  import type * as Layer from "effect/Layer"
6
+ import type * as ChildProcess from "node:child_process"
6
7
  import type * as WorkerThreads from "node:worker_threads"
7
8
  import * as internal from "./internal/worker.js"
8
9
 
@@ -23,7 +24,7 @@ export const layerWorker: Layer.Layer<Worker.PlatformWorker> = internal.layerWor
23
24
  * @category layers
24
25
  */
25
26
  export const layer: (
26
- spawn: (id: number) => WorkerThreads.Worker
27
+ spawn: (id: number) => WorkerThreads.Worker | ChildProcess.ChildProcess
27
28
  ) => Layer.Layer<Worker.WorkerManager | Worker.Spawner> = internal.layer
28
29
 
29
30
  /**
@@ -31,5 +32,5 @@ export const layer: (
31
32
  * @category layers
32
33
  */
33
34
  export const layerPlatform: (
34
- spawn: (id: number) => WorkerThreads.Worker
35
+ spawn: (id: number) => WorkerThreads.Worker | ChildProcess.ChildProcess
35
36
  ) => Layer.Layer<Worker.PlatformWorker | Worker.Spawner> = internal.layerPlatform
@@ -5,11 +5,27 @@ import * as Effect from "effect/Effect"
5
5
  import * as Exit from "effect/Exit"
6
6
  import * as Layer from "effect/Layer"
7
7
  import * as Scope from "effect/Scope"
8
+ import type * as ChildProcess from "node:child_process"
8
9
  import type * as WorkerThreads from "node:worker_threads"
9
10
 
10
- const platformWorkerImpl = Worker.makePlatform<WorkerThreads.Worker>()({
11
+ const platformWorkerImpl = Worker.makePlatform<WorkerThreads.Worker | ChildProcess.ChildProcess>()({
11
12
  setup({ scope, worker }) {
12
13
  return Effect.flatMap(Deferred.make<void, WorkerError>(), (exitDeferred) => {
14
+ const thing = "postMessage" in worker ?
15
+ {
16
+ postMessage(msg: any, t?: any) {
17
+ worker.postMessage(msg, t)
18
+ },
19
+ kill: () => worker.terminate(),
20
+ worker
21
+ } :
22
+ {
23
+ postMessage(msg: any, _?: any) {
24
+ worker.send(msg)
25
+ },
26
+ kill: () => worker.kill("SIGKILL"),
27
+ worker
28
+ }
13
29
  worker.on("exit", () => {
14
30
  Deferred.unsafeDone(exitDeferred, Exit.void)
15
31
  })
@@ -17,32 +33,32 @@ const platformWorkerImpl = Worker.makePlatform<WorkerThreads.Worker>()({
17
33
  Scope.addFinalizer(
18
34
  scope,
19
35
  Effect.suspend(() => {
20
- worker.postMessage([1])
36
+ thing.postMessage([1])
21
37
  return Deferred.await(exitDeferred)
22
38
  }).pipe(
23
39
  Effect.interruptible,
24
40
  Effect.timeout(5000),
25
- Effect.catchAllCause(() => Effect.sync(() => worker.terminate()))
41
+ Effect.catchAllCause(() => Effect.sync(() => thing.kill()))
26
42
  )
27
43
  ),
28
- worker
44
+ thing
29
45
  )
30
46
  })
31
47
  },
32
48
  listen({ deferred, emit, port }) {
33
- port.on("message", (message) => {
49
+ port.worker.on("message", (message) => {
34
50
  emit(message)
35
51
  })
36
- port.on("messageerror", (cause) => {
52
+ port.worker.on("messageerror", (cause) => {
37
53
  Deferred.unsafeDone(
38
54
  deferred,
39
55
  new WorkerError({ reason: "decode", cause })
40
56
  )
41
57
  })
42
- port.on("error", (cause) => {
58
+ port.worker.on("error", (cause) => {
43
59
  Deferred.unsafeDone(deferred, new WorkerError({ reason: "unknown", cause }))
44
60
  })
45
- port.on("exit", (code) => {
61
+ port.worker.on("exit", (code) => {
46
62
  Deferred.unsafeDone(
47
63
  deferred,
48
64
  new WorkerError({ reason: "unknown", cause: new Error(`exited with code ${code}`) })
@@ -59,12 +75,12 @@ export const layerWorker = Layer.succeed(Worker.PlatformWorker, platformWorkerIm
59
75
  export const layerManager = Layer.provide(Worker.layerManager, layerWorker)
60
76
 
61
77
  /** @internal */
62
- export const layer = (spawn: (id: number) => WorkerThreads.Worker) =>
78
+ export const layer = (spawn: (id: number) => WorkerThreads.Worker | ChildProcess.ChildProcess) =>
63
79
  Layer.merge(
64
80
  layerManager,
65
81
  Worker.layerSpawner(spawn)
66
82
  )
67
83
 
68
84
  /** @internal */
69
- export const layerPlatform = (spawn: (id: number) => WorkerThreads.Worker) =>
85
+ export const layerPlatform = (spawn: (id: number) => WorkerThreads.Worker | ChildProcess.ChildProcess) =>
70
86
  Layer.merge(layerWorker, Worker.layerSpawner(spawn))
@@ -15,12 +15,15 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
15
15
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
16
16
  start<I, O>(closeLatch: Deferred.Deferred<void, WorkerError>) {
17
17
  return Effect.gen(function*() {
18
- if (!WorkerThreads.parentPort) {
19
- return yield* new WorkerError({ reason: "spawn", cause: new Error("not in a worker thread") })
18
+ if (!WorkerThreads.parentPort && !process.send) {
19
+ return yield* new WorkerError({ reason: "spawn", cause: new Error("not in a worker") })
20
20
  }
21
- const port = WorkerThreads.parentPort
21
+
22
+ const unsafeSend = WorkerThreads.parentPort
23
+ ? (message: any, transfers?: any) => WorkerThreads.parentPort!.postMessage(message, transfers)
24
+ : (message: any, _transfers?: any) => process.send!(message)
22
25
  const send = (_portId: number, message: O, transfers?: ReadonlyArray<unknown>) =>
23
- Effect.sync(() => port.postMessage([1, message], transfers as any))
26
+ Effect.sync(() => unsafeSend([1, message], transfers as any))
24
27
 
25
28
  const run = Effect.fnUntraced(function*<A, E, R>(
26
29
  handler: (portId: number, message: I) => Effect.Effect<A, E, R> | void
@@ -35,7 +38,7 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
35
38
  Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)))
36
39
  }
37
40
  }
38
- port.on("message", (message: Runner.BackingRunner.Message<I>) => {
41
+ ;(WorkerThreads.parentPort ?? process).on("message", (message: Runner.BackingRunner.Message<I>) => {
39
42
  if (message[0] === 0) {
40
43
  const result = handler(0, message[1])
41
44
  if (Effect.isEffect(result)) {
@@ -44,17 +47,25 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
44
47
  FiberSet.unsafeAdd(fiberSet, fiber)
45
48
  }
46
49
  } else {
47
- port.close()
50
+ if (WorkerThreads.parentPort) {
51
+ WorkerThreads.parentPort.close()
52
+ } else {
53
+ process.channel?.unref()
54
+ }
48
55
  Deferred.unsafeDone(closeLatch, Exit.void)
49
56
  }
50
57
  })
51
- port.on("messageerror", (cause) => {
52
- Deferred.unsafeDone(closeLatch, new WorkerError({ reason: "decode", cause }))
53
- })
54
- port.on("error", (cause) => {
55
- Deferred.unsafeDone(closeLatch, new WorkerError({ reason: "unknown", cause }))
56
- })
57
- port.postMessage([0])
58
+
59
+ if (WorkerThreads.parentPort) {
60
+ WorkerThreads.parentPort.on("messageerror", (cause) => {
61
+ Deferred.unsafeDone(closeLatch, new WorkerError({ reason: "decode", cause }))
62
+ })
63
+ WorkerThreads.parentPort.on("error", (cause) => {
64
+ Deferred.unsafeDone(closeLatch, new WorkerError({ reason: "unknown", cause }))
65
+ })
66
+ }
67
+
68
+ unsafeSend([0])
58
69
  })
59
70
 
60
71
  return { run, send }