@effect/platform-node-shared 0.51.1 → 0.51.3

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.
@@ -26,7 +26,8 @@ const layerClientProtocol = exports.layerClientProtocol = /*#__PURE__*/Layer.eff
26
26
  const socket = yield* NodeSocket.makeNet({
27
27
  host: address.host,
28
28
  port: address.port,
29
- timeout: 5500
29
+ timeout: 5500,
30
+ openTimeout: 1000
30
31
  });
31
32
  return yield* RpcClient.makeProtocolSocket().pipe(Effect.provideService(_Socket.Socket, socket), Effect.provideService(RpcSerialization.RpcSerialization, serialization));
32
33
  }, Effect.orDie);
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterSocketCommon.js","names":["Runners","_interopRequireWildcard","require","_Socket","RpcClient","RpcSerialization","Effect","Layer","NodeSocket","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","layerClientProtocol","exports","effect","RpcClientProtocol","gen","serialization","fnUntraced","address","socket","makeNet","host","port","timeout","makeProtocolSocket","pipe","provideService","Socket","orDie"],"sources":["../../src/NodeClusterSocketCommon.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,gBAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAP,uBAAA,CAAAC,OAAA;AAA6C,SAAAD,wBAAAQ,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAQ,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAT7C;;;;AAWA;;;;AAIO,MAAMkB,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,gBAI5BrB,KAAK,CAACuB,MAAM,CACd9B,OAAO,CAAC+B,iBAAiB,eACzBzB,MAAM,CAAC0B,GAAG,CAAC,aAAS;EAClB,MAAMC,aAAa,GAAG,OAAO5B,gBAAgB,CAACA,gBAAgB;EAC9D,OAAOC,MAAM,CAAC4B,UAAU,CAAC,WAAUC,OAAO;IACxC,MAAMC,MAAM,GAAG,OAAO5B,UAAU,CAAC6B,OAAO,CAAC;MACvCC,IAAI,EAAEH,OAAO,CAACG,IAAI;MAClBC,IAAI,EAAEJ,OAAO,CAACI,IAAI;MAClBC,OAAO,EAAE;KACV,CAAC;IACF,OAAO,OAAOpC,SAAS,CAACqC,kBAAkB,EAAE,CAACC,IAAI,CAC/CpC,MAAM,CAACqC,cAAc,CAACC,cAAM,EAAER,MAAM,CAAC,EACrC9B,MAAM,CAACqC,cAAc,CAACtC,gBAAgB,CAACA,gBAAgB,EAAE4B,aAAa,CAAC,CACxE;EACH,CAAC,EAAE3B,MAAM,CAACuC,KAAK,CAAC;AAClB,CAAC,CAAC,CACH","ignoreList":[]}
1
+ {"version":3,"file":"NodeClusterSocketCommon.js","names":["Runners","_interopRequireWildcard","require","_Socket","RpcClient","RpcSerialization","Effect","Layer","NodeSocket","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","layerClientProtocol","exports","effect","RpcClientProtocol","gen","serialization","fnUntraced","address","socket","makeNet","host","port","timeout","openTimeout","makeProtocolSocket","pipe","provideService","Socket","orDie"],"sources":["../../src/NodeClusterSocketCommon.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,gBAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAP,uBAAA,CAAAC,OAAA;AAA6C,SAAAD,wBAAAQ,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAQ,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAT7C;;;;AAWA;;;;AAIO,MAAMkB,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,gBAI5BrB,KAAK,CAACuB,MAAM,CACd9B,OAAO,CAAC+B,iBAAiB,eACzBzB,MAAM,CAAC0B,GAAG,CAAC,aAAS;EAClB,MAAMC,aAAa,GAAG,OAAO5B,gBAAgB,CAACA,gBAAgB;EAC9D,OAAOC,MAAM,CAAC4B,UAAU,CAAC,WAAUC,OAAO;IACxC,MAAMC,MAAM,GAAG,OAAO5B,UAAU,CAAC6B,OAAO,CAAC;MACvCC,IAAI,EAAEH,OAAO,CAACG,IAAI;MAClBC,IAAI,EAAEJ,OAAO,CAACI,IAAI;MAClBC,OAAO,EAAE,IAAI;MACbC,WAAW,EAAE;KACd,CAAC;IACF,OAAO,OAAOrC,SAAS,CAACsC,kBAAkB,EAAE,CAACC,IAAI,CAC/CrC,MAAM,CAACsC,cAAc,CAACC,cAAM,EAAET,MAAM,CAAC,EACrC9B,MAAM,CAACsC,cAAc,CAACvC,gBAAgB,CAACA,gBAAgB,EAAE4B,aAAa,CAAC,CACxE;EACH,CAAC,EAAE3B,MAAM,CAACwC,KAAK,CAAC;AAClB,CAAC,CAAC,CACH","ignoreList":[]}
@@ -10,6 +10,7 @@ var Context = _interopRequireWildcard(require("effect/Context"));
10
10
  var Deferred = _interopRequireWildcard(require("effect/Deferred"));
11
11
  var Effect = _interopRequireWildcard(require("effect/Effect"));
12
12
  var FiberSet = _interopRequireWildcard(require("effect/FiberSet"));
13
+ var _Function = require("effect/Function");
13
14
  var Layer = _interopRequireWildcard(require("effect/Layer"));
14
15
  var Scope = _interopRequireWildcard(require("effect/Scope"));
15
16
  var Net = _interopRequireWildcard(require("node:net"));
@@ -52,25 +53,34 @@ const makeNet = options => fromDuplex(Effect.scopeWith(scope => {
52
53
  })));
53
54
  });
54
55
  }));
55
- }));
56
+ }), options);
56
57
  /**
57
58
  * @since 1.0.0
58
59
  * @category constructors
59
60
  */
60
61
  exports.makeNet = makeNet;
61
- const fromDuplex = open => Effect.withFiberRuntime(fiber => {
62
+ const fromDuplex = (open, options) => Effect.withFiberRuntime(fiber => {
62
63
  let currentSocket;
63
64
  const latch = Effect.unsafeMakeLatch(false);
64
65
  const openContext = fiber.currentContext;
65
66
  const run = (handler, opts) => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
66
67
  const fiberSet = yield* FiberSet.make().pipe(Scope.extend(scope));
68
+ // eslint-disable-next-line prefer-const
69
+ let conn;
67
70
  yield* Scope.addFinalizer(scope, Effect.sync(() => {
71
+ if (!conn) return;
68
72
  conn.off("data", onData);
69
73
  conn.off("end", onEnd);
70
74
  conn.off("error", onError);
71
75
  conn.off("close", onClose);
72
76
  }));
73
- const conn = yield* Scope.extend(open, scope);
77
+ conn = yield* Scope.extend(open, scope).pipe(options?.openTimeout ? Effect.timeoutFail({
78
+ duration: options.openTimeout,
79
+ onTimeout: () => new Socket.SocketGenericError({
80
+ reason: "Open",
81
+ cause: new Error("Connection timed out")
82
+ })
83
+ }) : _Function.identity);
74
84
  conn.on("end", onEnd);
75
85
  conn.on("error", onError);
76
86
  conn.on("close", onClose);
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocket.js","names":["Socket","_interopRequireWildcard","require","Channel","Context","Deferred","Effect","FiberSet","Layer","Scope","Net","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NetSocket","exports","GenericTag","makeNet","options","fromDuplex","scopeWith","scope","conn","flatMap","addFinalizer","sync","closed","destroySoon","destroy","removeAllListeners","async","resume","createConnection","once","succeed","on","cause","fail","SocketGenericError","reason","open","withFiberRuntime","fiber","currentSocket","latch","unsafeMakeLatch","openContext","currentContext","run","handler","opts","scopedWith","fnUntraced","fiberSet","make","pipe","extend","off","onData","onEnd","onError","onClose","provideService","runtime","onOpen","join","chunk","result","isEffect","unsafeDone","deferred","void","hadError","SocketCloseError","code","mapInputContext","input","merge","ensuring","unsafeClose","undefined","interruptible","write","whenOpen","isCloseEvent","Error","writer","acquireRelease","writableEnded","end","of","TypeId","runRaw","makeNetChannel","unwrapScoped","map","toChannelWith","layerNet","effect"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeSocket.js","names":["Socket","_interopRequireWildcard","require","Channel","Context","Deferred","Effect","FiberSet","_Function","Layer","Scope","Net","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NetSocket","exports","GenericTag","makeNet","options","fromDuplex","scopeWith","scope","conn","flatMap","addFinalizer","sync","closed","destroySoon","destroy","removeAllListeners","async","resume","createConnection","once","succeed","on","cause","fail","SocketGenericError","reason","open","withFiberRuntime","fiber","currentSocket","latch","unsafeMakeLatch","openContext","currentContext","run","handler","opts","scopedWith","fnUntraced","fiberSet","make","pipe","extend","off","onData","onEnd","onError","onClose","openTimeout","timeoutFail","duration","onTimeout","Error","identity","provideService","runtime","onOpen","join","chunk","result","isEffect","unsafeDone","deferred","void","hadError","SocketCloseError","code","mapInputContext","input","merge","ensuring","unsafeClose","undefined","interruptible","write","whenOpen","isCloseEvent","writer","acquireRelease","writableEnded","end","of","TypeId","runRaw","makeNetChannel","unwrapScoped","map","toChannelWith","layerNet","effect"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,7 @@ exports.makeWebSocket = exports.make = exports.layerWebSocket = exports.layer =
7
7
  var Socket = _interopRequireWildcard(require("@effect/platform/Socket"));
8
8
  var SocketServer = _interopRequireWildcard(require("@effect/platform/SocketServer"));
9
9
  var Context = _interopRequireWildcard(require("effect/Context"));
10
+ var Deferred = _interopRequireWildcard(require("effect/Deferred"));
10
11
  var Effect = _interopRequireWildcard(require("effect/Effect"));
11
12
  var Exit = _interopRequireWildcard(require("effect/Exit"));
12
13
  var FiberRef = _interopRequireWildcard(require("effect/FiberRef"));
@@ -33,37 +34,66 @@ class IncomingMessage extends /*#__PURE__*/Context.Tag("@effect/platform-node-sh
33
34
  */
34
35
  exports.IncomingMessage = IncomingMessage;
35
36
  const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
36
- const server = yield* Effect.acquireRelease(Effect.sync(() => Net.createServer(options)), server => Effect.async(resume => {
37
+ const errorDeferred = yield* Deferred.make();
38
+ const pending = [];
39
+ const defaultOnConnection = socket => {
40
+ pending.push(socket);
41
+ };
42
+ let onConnection = defaultOnConnection;
43
+ yield* Effect.addFinalizer(() => Effect.async(resume => {
37
44
  server.close(() => resume(Effect.void));
38
45
  }));
46
+ const server = Net.createServer(options, conn => onConnection(conn));
47
+ server.on("error", cause => Deferred.unsafeDone(errorDeferred, Exit.fail(cause)));
39
48
  yield* Effect.async(resume => {
40
- server.once("error", cause => {
41
- resume(Effect.fail(new SocketServer.SocketServerError({
42
- reason: "Open",
43
- cause
44
- })));
45
- });
46
49
  server.listen(options, () => {
47
50
  resume(Effect.void);
48
51
  });
49
- });
52
+ }).pipe(Effect.raceFirst(Effect.mapError(Deferred.await(errorDeferred), cause => new SocketServer.SocketServerError({
53
+ reason: "Open",
54
+ cause
55
+ }))));
50
56
  const run = Effect.fnUntraced(function* (handler) {
51
57
  const scope = yield* Scope.make();
52
58
  const fiberSet = yield* FiberSet.make().pipe(Scope.extend(scope));
53
59
  const run = yield* FiberSet.runtime(fiberSet)();
54
- function onConnection(conn) {
55
- (0, _Function.pipe)(NodeSocket.fromDuplex(Effect.acquireRelease(Effect.succeed(conn), conn => Effect.sync(() => {
60
+ function onConnection_(conn) {
61
+ let error;
62
+ conn.on("error", err => {
63
+ error = err;
64
+ });
65
+ (0, _Function.pipe)(NodeSocket.fromDuplex(Effect.acquireRelease(Effect.suspend(() => {
66
+ if (error) {
67
+ return Effect.fail(new Socket.SocketGenericError({
68
+ reason: "Open",
69
+ cause: error
70
+ }));
71
+ } else if (conn.closed) {
72
+ return Effect.fail(new Socket.SocketCloseError({
73
+ reason: "Close",
74
+ code: 1000
75
+ }));
76
+ }
77
+ return Effect.succeed(conn);
78
+ }), conn => Effect.sync(() => {
56
79
  if (conn.closed === false) {
57
80
  conn.destroySoon();
58
81
  }
59
82
  }))), Effect.flatMap(handler), Effect.catchAllCause(reportUnhandledError), Effect.provideService(NodeSocket.NetSocket, conn), run);
60
83
  }
61
84
  return yield* Effect.async(_resume => {
62
- server.on("connection", onConnection);
63
- return Effect.sync(() => {
64
- server.off("connection", onConnection);
85
+ const prev = onConnection;
86
+ onConnection = onConnection_;
87
+ pending.forEach(onConnection);
88
+ pending.length = 0;
89
+ return Effect.suspend(() => {
90
+ onConnection = prev;
91
+ return Scope.close(scope, Exit.void);
65
92
  });
66
- }).pipe(Effect.ensuring(Scope.close(scope, Exit.void)));
93
+ }).pipe(Effect.raceFirst(Effect.mapError(Deferred.await(errorDeferred), cause => new SocketServer.SocketServerError({
94
+ reason: "Unknown",
95
+ cause
96
+ }))));
67
97
  });
68
98
  const address = server.address();
69
99
  return SocketServer.SocketServer.of({
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocketServer.js","names":["Socket","_interopRequireWildcard","require","SocketServer","Context","Effect","Exit","FiberRef","FiberSet","_Function","Layer","Scope","Net","WS","NodeSocket","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IncomingMessage","Tag","exports","make","fnUntraced","options","server","acquireRelease","sync","createServer","async","resume","close","void","once","cause","fail","SocketServerError","reason","listen","run","handler","scope","fiberSet","pipe","extend","runtime","onConnection","conn","fromDuplex","succeed","closed","destroySoon","flatMap","catchAllCause","reportUnhandledError","provideService","NetSocket","_resume","on","off","ensuring","address","of","_tag","path","hostname","port","layer","scoped","makeWebSocket","WebSocketServer","error","req","fromWebSocket","WebSocket","layerWebSocket","withFiberRuntime","fiber","unhandledLogLevel","getFiberRef","unhandledErrorLogLevel","logWithLevel","value"],"sources":["../../src/NodeSocketServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeSocketServer.js","names":["Socket","_interopRequireWildcard","require","SocketServer","Context","Deferred","Effect","Exit","FiberRef","FiberSet","_Function","Layer","Scope","Net","WS","NodeSocket","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IncomingMessage","Tag","exports","make","fnUntraced","options","errorDeferred","pending","defaultOnConnection","socket","push","onConnection","addFinalizer","async","resume","server","close","void","createServer","conn","on","cause","unsafeDone","fail","listen","pipe","raceFirst","mapError","await","SocketServerError","reason","run","handler","scope","fiberSet","extend","runtime","onConnection_","error","err","fromDuplex","acquireRelease","suspend","SocketGenericError","closed","SocketCloseError","code","succeed","sync","destroySoon","flatMap","catchAllCause","reportUnhandledError","provideService","NetSocket","_resume","prev","forEach","length","address","of","_tag","path","hostname","port","layer","scoped","makeWebSocket","WebSocketServer","once","req","fromWebSocket","WebSocket","off","ensuring","layerWebSocket","withFiberRuntime","fiber","unhandledLogLevel","getFiberRef","unhandledErrorLogLevel","logWithLevel","value"],"sources":["../../src/NodeSocketServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterSocketCommon.d.ts","sourceRoot":"","sources":["../../src/NodeClusterSocketCommon.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAA;AAGlD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAA;AAEhE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAC3C,OAAO,CAAC,iBAAiB,EACzB,KAAK,EACL,gBAAgB,CAAC,gBAAgB,CAiBlC,CAAA"}
1
+ {"version":3,"file":"NodeClusterSocketCommon.d.ts","sourceRoot":"","sources":["../../src/NodeClusterSocketCommon.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAA;AAGlD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAA;AAEhE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAC3C,OAAO,CAAC,iBAAiB,EACzB,KAAK,EACL,gBAAgB,CAAC,gBAAgB,CAkBlC,CAAA"}
@@ -5,6 +5,7 @@ import * as Socket from "@effect/platform/Socket";
5
5
  import * as Channel from "effect/Channel";
6
6
  import type * as Chunk from "effect/Chunk";
7
7
  import * as Context from "effect/Context";
8
+ import type * as Duration from "effect/Duration";
8
9
  import * as Effect from "effect/Effect";
9
10
  import * as Layer from "effect/Layer";
10
11
  import * as Scope from "effect/Scope";
@@ -26,12 +27,16 @@ export declare const NetSocket: Context.Tag<NetSocket, Net.Socket>;
26
27
  * @since 1.0.0
27
28
  * @category constructors
28
29
  */
29
- export declare const makeNet: (options: Net.NetConnectOpts) => Effect.Effect<Socket.Socket, Socket.SocketError>;
30
+ export declare const makeNet: (options: Net.NetConnectOpts & {
31
+ readonly openTimeout?: Duration.DurationInput | undefined;
32
+ }) => Effect.Effect<Socket.Socket, Socket.SocketError>;
30
33
  /**
31
34
  * @since 1.0.0
32
35
  * @category constructors
33
36
  */
34
- export declare const fromDuplex: <RO>(open: Effect.Effect<Duplex, Socket.SocketError, RO>) => Effect.Effect<Socket.Socket, never, Exclude<RO, Scope.Scope>>;
37
+ export declare const fromDuplex: <RO>(open: Effect.Effect<Duplex, Socket.SocketError, RO>, options?: {
38
+ readonly openTimeout?: Duration.DurationInput | undefined;
39
+ }) => Effect.Effect<Socket.Socket, never, Exclude<RO, Scope.Scope>>;
35
40
  /**
36
41
  * @since 1.0.0
37
42
  * @category constructors
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../../src/NodeSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAExD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,GAAG,CAAC,cAAc,KAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CA+B/C,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,EAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAsG3D,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,EAAE,GAAG,KAAK,EACvC,SAAS,GAAG,CAAC,cAAc,KAC1B,OAAO,CAAC,OAAO,CAChB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EACvB,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,EACpD,MAAM,CAAC,WAAW,GAAG,EAAE,EACvB,EAAE,EACF,IAAI,EACJ,OAAO,CAIN,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS,GAAG,CAAC,cAAc,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CACrD,CAAA"}
1
+ {"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../../src/NodeSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAExD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,GAClB,SAAS,GAAG,CAAC,cAAc,GAAG;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;CAC1D,KACA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAgC/C,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,EAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,EACnD,UAAU;IACR,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;CAC1D,KACA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAiH3D,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,EAAE,GAAG,KAAK,EACvC,SAAS,GAAG,CAAC,cAAc,KAC1B,OAAO,CAAC,OAAO,CAChB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EACvB,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,EACpD,MAAM,CAAC,WAAW,GAAG,EAAE,EACvB,EAAE,EACF,IAAI,EACJ,OAAO,CAIN,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS,GAAG,CAAC,cAAc,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CACrD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocketServer.d.ts","sourceRoot":"","sources":["../../src/NodeSocketServer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;;AAGxB;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,IAAI;;;+CA0Ef,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,SAAS,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,KAC1C,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAIrE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KACxE,MAAM,CAAC,MAAM,CAChB,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EACjC,YAAY,CAAC,iBAAiB,EAC9B,KAAK,CAAC,KAAK,CA0EX,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,EAAE,CAAC,aAAa,KACxB,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAIrE,CAAA"}
1
+ {"version":3,"file":"NodeSocketServer.d.ts","sourceRoot":"","sources":["../../src/NodeSocketServer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;;AAGxB;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG;AAEN;;;GAGG;AACH,eAAO,MAAM,IAAI;;;+CAuGf,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,SAAS,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,KAC1C,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAIrE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KACxE,MAAM,CAAC,MAAM,CAChB,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EACjC,YAAY,CAAC,iBAAiB,EAC9B,KAAK,CAAC,KAAK,CA0EX,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,EAAE,CAAC,aAAa,KACxB,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAIrE,CAAA"}
@@ -18,7 +18,8 @@ export const layerClientProtocol = /*#__PURE__*/Layer.effect(Runners.RpcClientPr
18
18
  const socket = yield* NodeSocket.makeNet({
19
19
  host: address.host,
20
20
  port: address.port,
21
- timeout: 5500
21
+ timeout: 5500,
22
+ openTimeout: 1000
22
23
  });
23
24
  return yield* RpcClient.makeProtocolSocket().pipe(Effect.provideService(Socket, socket), Effect.provideService(RpcSerialization.RpcSerialization, serialization));
24
25
  }, Effect.orDie);
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterSocketCommon.js","names":["Runners","Socket","RpcClient","RpcSerialization","Effect","Layer","NodeSocket","layerClientProtocol","effect","RpcClientProtocol","gen","serialization","fnUntraced","address","socket","makeNet","host","port","timeout","makeProtocolSocket","pipe","provideService","orDie"],"sources":["../../src/NodeClusterSocketCommon.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,yBAAyB;AAClD,SAASC,MAAM,QAAQ,yBAAyB;AAChD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAClD,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAChE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;;AAIA,OAAO,MAAMC,mBAAmB,gBAI5BF,KAAK,CAACG,MAAM,CACdR,OAAO,CAACS,iBAAiB,eACzBL,MAAM,CAACM,GAAG,CAAC,aAAS;EAClB,MAAMC,aAAa,GAAG,OAAOR,gBAAgB,CAACA,gBAAgB;EAC9D,OAAOC,MAAM,CAACQ,UAAU,CAAC,WAAUC,OAAO;IACxC,MAAMC,MAAM,GAAG,OAAOR,UAAU,CAACS,OAAO,CAAC;MACvCC,IAAI,EAAEH,OAAO,CAACG,IAAI;MAClBC,IAAI,EAAEJ,OAAO,CAACI,IAAI;MAClBC,OAAO,EAAE;KACV,CAAC;IACF,OAAO,OAAOhB,SAAS,CAACiB,kBAAkB,EAAE,CAACC,IAAI,CAC/ChB,MAAM,CAACiB,cAAc,CAACpB,MAAM,EAAEa,MAAM,CAAC,EACrCV,MAAM,CAACiB,cAAc,CAAClB,gBAAgB,CAACA,gBAAgB,EAAEQ,aAAa,CAAC,CACxE;EACH,CAAC,EAAEP,MAAM,CAACkB,KAAK,CAAC;AAClB,CAAC,CAAC,CACH","ignoreList":[]}
1
+ {"version":3,"file":"NodeClusterSocketCommon.js","names":["Runners","Socket","RpcClient","RpcSerialization","Effect","Layer","NodeSocket","layerClientProtocol","effect","RpcClientProtocol","gen","serialization","fnUntraced","address","socket","makeNet","host","port","timeout","openTimeout","makeProtocolSocket","pipe","provideService","orDie"],"sources":["../../src/NodeClusterSocketCommon.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,yBAAyB;AAClD,SAASC,MAAM,QAAQ,yBAAyB;AAChD,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAClD,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAChE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;;AAIA,OAAO,MAAMC,mBAAmB,gBAI5BF,KAAK,CAACG,MAAM,CACdR,OAAO,CAACS,iBAAiB,eACzBL,MAAM,CAACM,GAAG,CAAC,aAAS;EAClB,MAAMC,aAAa,GAAG,OAAOR,gBAAgB,CAACA,gBAAgB;EAC9D,OAAOC,MAAM,CAACQ,UAAU,CAAC,WAAUC,OAAO;IACxC,MAAMC,MAAM,GAAG,OAAOR,UAAU,CAACS,OAAO,CAAC;MACvCC,IAAI,EAAEH,OAAO,CAACG,IAAI;MAClBC,IAAI,EAAEJ,OAAO,CAACI,IAAI;MAClBC,OAAO,EAAE,IAAI;MACbC,WAAW,EAAE;KACd,CAAC;IACF,OAAO,OAAOjB,SAAS,CAACkB,kBAAkB,EAAE,CAACC,IAAI,CAC/CjB,MAAM,CAACkB,cAAc,CAACrB,MAAM,EAAEa,MAAM,CAAC,EACrCV,MAAM,CAACkB,cAAc,CAACnB,gBAAgB,CAACA,gBAAgB,EAAEQ,aAAa,CAAC,CACxE;EACH,CAAC,EAAEP,MAAM,CAACmB,KAAK,CAAC;AAClB,CAAC,CAAC,CACH","ignoreList":[]}
@@ -7,6 +7,7 @@ import * as Context from "effect/Context";
7
7
  import * as Deferred from "effect/Deferred";
8
8
  import * as Effect from "effect/Effect";
9
9
  import * as FiberSet from "effect/FiberSet";
10
+ import { identity } from "effect/Function";
10
11
  import * as Layer from "effect/Layer";
11
12
  import * as Scope from "effect/Scope";
12
13
  import * as Net from "node:net";
@@ -44,24 +45,33 @@ export const makeNet = options => fromDuplex(Effect.scopeWith(scope => {
44
45
  })));
45
46
  });
46
47
  }));
47
- }));
48
+ }), options);
48
49
  /**
49
50
  * @since 1.0.0
50
51
  * @category constructors
51
52
  */
52
- export const fromDuplex = open => Effect.withFiberRuntime(fiber => {
53
+ export const fromDuplex = (open, options) => Effect.withFiberRuntime(fiber => {
53
54
  let currentSocket;
54
55
  const latch = Effect.unsafeMakeLatch(false);
55
56
  const openContext = fiber.currentContext;
56
57
  const run = (handler, opts) => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
57
58
  const fiberSet = yield* FiberSet.make().pipe(Scope.extend(scope));
59
+ // eslint-disable-next-line prefer-const
60
+ let conn;
58
61
  yield* Scope.addFinalizer(scope, Effect.sync(() => {
62
+ if (!conn) return;
59
63
  conn.off("data", onData);
60
64
  conn.off("end", onEnd);
61
65
  conn.off("error", onError);
62
66
  conn.off("close", onClose);
63
67
  }));
64
- const conn = yield* Scope.extend(open, scope);
68
+ conn = yield* Scope.extend(open, scope).pipe(options?.openTimeout ? Effect.timeoutFail({
69
+ duration: options.openTimeout,
70
+ onTimeout: () => new Socket.SocketGenericError({
71
+ reason: "Open",
72
+ cause: new Error("Connection timed out")
73
+ })
74
+ }) : identity);
65
75
  conn.on("end", onEnd);
66
76
  conn.on("error", onError);
67
77
  conn.on("close", onClose);
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocket.js","names":["Socket","Channel","Context","Deferred","Effect","FiberSet","Layer","Scope","Net","NetSocket","GenericTag","makeNet","options","fromDuplex","scopeWith","scope","conn","flatMap","addFinalizer","sync","closed","destroySoon","destroy","removeAllListeners","async","resume","createConnection","once","succeed","on","cause","fail","SocketGenericError","reason","open","withFiberRuntime","fiber","currentSocket","latch","unsafeMakeLatch","openContext","currentContext","run","handler","opts","scopedWith","fnUntraced","fiberSet","make","pipe","extend","off","onData","onEnd","onError","onClose","provideService","runtime","onOpen","join","chunk","result","isEffect","unsafeDone","deferred","void","hadError","SocketCloseError","code","mapInputContext","input","merge","ensuring","unsafeClose","undefined","interruptible","write","whenOpen","isCloseEvent","Error","writer","acquireRelease","writableEnded","end","of","TypeId","runRaw","makeNetChannel","unwrapScoped","map","toChannelWith","layerNet","effect"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeSocket.js","names":["Socket","Channel","Context","Deferred","Effect","FiberSet","identity","Layer","Scope","Net","NetSocket","GenericTag","makeNet","options","fromDuplex","scopeWith","scope","conn","flatMap","addFinalizer","sync","closed","destroySoon","destroy","removeAllListeners","async","resume","createConnection","once","succeed","on","cause","fail","SocketGenericError","reason","open","withFiberRuntime","fiber","currentSocket","latch","unsafeMakeLatch","openContext","currentContext","run","handler","opts","scopedWith","fnUntraced","fiberSet","make","pipe","extend","off","onData","onEnd","onError","onClose","openTimeout","timeoutFail","duration","onTimeout","Error","provideService","runtime","onOpen","join","chunk","result","isEffect","unsafeDone","deferred","void","hadError","SocketCloseError","code","mapInputContext","input","merge","ensuring","unsafeClose","undefined","interruptible","write","whenOpen","isCloseEvent","writer","acquireRelease","writableEnded","end","of","TypeId","runRaw","makeNetChannel","unwrapScoped","map","toChannelWith","layerNet","effect"],"sources":["../../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,7 @@
4
4
  import * as Socket from "@effect/platform/Socket";
5
5
  import * as SocketServer from "@effect/platform/SocketServer";
6
6
  import * as Context from "effect/Context";
7
+ import * as Deferred from "effect/Deferred";
7
8
  import * as Effect from "effect/Effect";
8
9
  import * as Exit from "effect/Exit";
9
10
  import * as FiberRef from "effect/FiberRef";
@@ -24,37 +25,66 @@ export class IncomingMessage extends /*#__PURE__*/Context.Tag("@effect/platform-
24
25
  * @category constructors
25
26
  */
26
27
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
27
- const server = yield* Effect.acquireRelease(Effect.sync(() => Net.createServer(options)), server => Effect.async(resume => {
28
+ const errorDeferred = yield* Deferred.make();
29
+ const pending = [];
30
+ const defaultOnConnection = socket => {
31
+ pending.push(socket);
32
+ };
33
+ let onConnection = defaultOnConnection;
34
+ yield* Effect.addFinalizer(() => Effect.async(resume => {
28
35
  server.close(() => resume(Effect.void));
29
36
  }));
37
+ const server = Net.createServer(options, conn => onConnection(conn));
38
+ server.on("error", cause => Deferred.unsafeDone(errorDeferred, Exit.fail(cause)));
30
39
  yield* Effect.async(resume => {
31
- server.once("error", cause => {
32
- resume(Effect.fail(new SocketServer.SocketServerError({
33
- reason: "Open",
34
- cause
35
- })));
36
- });
37
40
  server.listen(options, () => {
38
41
  resume(Effect.void);
39
42
  });
40
- });
43
+ }).pipe(Effect.raceFirst(Effect.mapError(Deferred.await(errorDeferred), cause => new SocketServer.SocketServerError({
44
+ reason: "Open",
45
+ cause
46
+ }))));
41
47
  const run = Effect.fnUntraced(function* (handler) {
42
48
  const scope = yield* Scope.make();
43
49
  const fiberSet = yield* FiberSet.make().pipe(Scope.extend(scope));
44
50
  const run = yield* FiberSet.runtime(fiberSet)();
45
- function onConnection(conn) {
46
- pipe(NodeSocket.fromDuplex(Effect.acquireRelease(Effect.succeed(conn), conn => Effect.sync(() => {
51
+ function onConnection_(conn) {
52
+ let error;
53
+ conn.on("error", err => {
54
+ error = err;
55
+ });
56
+ pipe(NodeSocket.fromDuplex(Effect.acquireRelease(Effect.suspend(() => {
57
+ if (error) {
58
+ return Effect.fail(new Socket.SocketGenericError({
59
+ reason: "Open",
60
+ cause: error
61
+ }));
62
+ } else if (conn.closed) {
63
+ return Effect.fail(new Socket.SocketCloseError({
64
+ reason: "Close",
65
+ code: 1000
66
+ }));
67
+ }
68
+ return Effect.succeed(conn);
69
+ }), conn => Effect.sync(() => {
47
70
  if (conn.closed === false) {
48
71
  conn.destroySoon();
49
72
  }
50
73
  }))), Effect.flatMap(handler), Effect.catchAllCause(reportUnhandledError), Effect.provideService(NodeSocket.NetSocket, conn), run);
51
74
  }
52
75
  return yield* Effect.async(_resume => {
53
- server.on("connection", onConnection);
54
- return Effect.sync(() => {
55
- server.off("connection", onConnection);
76
+ const prev = onConnection;
77
+ onConnection = onConnection_;
78
+ pending.forEach(onConnection);
79
+ pending.length = 0;
80
+ return Effect.suspend(() => {
81
+ onConnection = prev;
82
+ return Scope.close(scope, Exit.void);
56
83
  });
57
- }).pipe(Effect.ensuring(Scope.close(scope, Exit.void)));
84
+ }).pipe(Effect.raceFirst(Effect.mapError(Deferred.await(errorDeferred), cause => new SocketServer.SocketServerError({
85
+ reason: "Unknown",
86
+ cause
87
+ }))));
58
88
  });
59
89
  const address = server.address();
60
90
  return SocketServer.SocketServer.of({
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocketServer.js","names":["Socket","SocketServer","Context","Effect","Exit","FiberRef","FiberSet","pipe","Layer","Scope","Net","WS","NodeSocket","IncomingMessage","Tag","make","fnUntraced","options","server","acquireRelease","sync","createServer","async","resume","close","void","once","cause","fail","SocketServerError","reason","listen","run","handler","scope","fiberSet","extend","runtime","onConnection","conn","fromDuplex","succeed","closed","destroySoon","flatMap","catchAllCause","reportUnhandledError","provideService","NetSocket","_resume","on","off","ensuring","address","of","_tag","path","hostname","port","layer","scoped","makeWebSocket","WebSocketServer","error","req","fromWebSocket","WebSocket","layerWebSocket","withFiberRuntime","fiber","unhandledLogLevel","getFiberRef","unhandledErrorLogLevel","logWithLevel","value"],"sources":["../../src/NodeSocketServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeSocketServer.js","names":["Socket","SocketServer","Context","Deferred","Effect","Exit","FiberRef","FiberSet","pipe","Layer","Scope","Net","WS","NodeSocket","IncomingMessage","Tag","make","fnUntraced","options","errorDeferred","pending","defaultOnConnection","socket","push","onConnection","addFinalizer","async","resume","server","close","void","createServer","conn","on","cause","unsafeDone","fail","listen","raceFirst","mapError","await","SocketServerError","reason","run","handler","scope","fiberSet","extend","runtime","onConnection_","error","err","fromDuplex","acquireRelease","suspend","SocketGenericError","closed","SocketCloseError","code","succeed","sync","destroySoon","flatMap","catchAllCause","reportUnhandledError","provideService","NetSocket","_resume","prev","forEach","length","address","of","_tag","path","hostname","port","layer","scoped","makeWebSocket","WebSocketServer","once","req","fromWebSocket","WebSocket","off","ensuring","layerWebSocket","withFiberRuntime","fiber","unhandledLogLevel","getFiberRef","unhandledErrorLogLevel","logWithLevel","value"],"sources":["../../src/NodeSocketServer.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-shared",
3
- "version": "0.51.1",
3
+ "version": "0.51.3",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -16,9 +16,9 @@
16
16
  "ws": "^8.18.2"
17
17
  },
18
18
  "peerDependencies": {
19
- "@effect/cluster": "^0.50.1",
19
+ "@effect/cluster": "^0.50.3",
20
+ "@effect/platform": "^0.92.1",
20
21
  "@effect/rpc": "^0.71.0",
21
- "@effect/platform": "^0.92.0",
22
22
  "@effect/sql": "^0.46.0",
23
23
  "effect": "^3.18.1"
24
24
  },
@@ -25,7 +25,8 @@ export const layerClientProtocol: Layer.Layer<
25
25
  const socket = yield* NodeSocket.makeNet({
26
26
  host: address.host,
27
27
  port: address.port,
28
- timeout: 5500
28
+ timeout: 5500,
29
+ openTimeout: 1000
29
30
  })
30
31
  return yield* RpcClient.makeProtocolSocket().pipe(
31
32
  Effect.provideService(Socket, socket),
package/src/NodeSocket.ts CHANGED
@@ -6,8 +6,10 @@ import * as Channel from "effect/Channel"
6
6
  import type * as Chunk from "effect/Chunk"
7
7
  import * as Context from "effect/Context"
8
8
  import * as Deferred from "effect/Deferred"
9
+ import type * as Duration from "effect/Duration"
9
10
  import * as Effect from "effect/Effect"
10
11
  import * as FiberSet from "effect/FiberSet"
12
+ import { identity } from "effect/Function"
11
13
  import * as Layer from "effect/Layer"
12
14
  import * as Scope from "effect/Scope"
13
15
  import * as Net from "node:net"
@@ -34,7 +36,9 @@ export const NetSocket: Context.Tag<NetSocket, Net.Socket> = Context.GenericTag(
34
36
  * @category constructors
35
37
  */
36
38
  export const makeNet = (
37
- options: Net.NetConnectOpts
39
+ options: Net.NetConnectOpts & {
40
+ readonly openTimeout?: Duration.DurationInput | undefined
41
+ }
38
42
  ): Effect.Effect<Socket.Socket, Socket.SocketError> =>
39
43
  fromDuplex(
40
44
  Effect.scopeWith((scope) => {
@@ -65,7 +69,8 @@ export const makeNet = (
65
69
  })
66
70
  })
67
71
  )
68
- })
72
+ }),
73
+ options
69
74
  )
70
75
 
71
76
  /**
@@ -73,7 +78,10 @@ export const makeNet = (
73
78
  * @category constructors
74
79
  */
75
80
  export const fromDuplex = <RO>(
76
- open: Effect.Effect<Duplex, Socket.SocketError, RO>
81
+ open: Effect.Effect<Duplex, Socket.SocketError, RO>,
82
+ options?: {
83
+ readonly openTimeout?: Duration.DurationInput | undefined
84
+ }
77
85
  ): Effect.Effect<Socket.Socket, never, Exclude<RO, Scope.Scope>> =>
78
86
  Effect.withFiberRuntime<Socket.Socket, never, Exclude<RO, Scope.Scope>>((fiber) => {
79
87
  let currentSocket: Duplex | undefined
@@ -86,9 +94,12 @@ export const fromDuplex = <RO>(
86
94
  const fiberSet = yield* FiberSet.make<any, E | Socket.SocketError>().pipe(
87
95
  Scope.extend(scope)
88
96
  )
97
+ // eslint-disable-next-line prefer-const
98
+ let conn: Duplex | undefined
89
99
  yield* Scope.addFinalizer(
90
100
  scope,
91
101
  Effect.sync(() => {
102
+ if (!conn) return
92
103
  conn.off("data", onData)
93
104
  conn.off("end", onEnd)
94
105
  conn.off("error", onError)
@@ -96,7 +107,15 @@ export const fromDuplex = <RO>(
96
107
  })
97
108
  )
98
109
 
99
- const conn = yield* Scope.extend(open, scope)
110
+ conn = yield* Scope.extend(open, scope).pipe(
111
+ options?.openTimeout ?
112
+ Effect.timeoutFail({
113
+ duration: options.openTimeout,
114
+ onTimeout: () =>
115
+ new Socket.SocketGenericError({ reason: "Open", cause: new Error("Connection timed out") })
116
+ }) :
117
+ identity
118
+ )
100
119
  conn.on("end", onEnd)
101
120
  conn.on("error", onError)
102
121
  conn.on("close", onClose)
@@ -5,6 +5,7 @@ import * as Socket from "@effect/platform/Socket"
5
5
  import * as SocketServer from "@effect/platform/SocketServer"
6
6
  import type { Cause } from "effect/Cause"
7
7
  import * as Context from "effect/Context"
8
+ import * as Deferred from "effect/Deferred"
8
9
  import * as Effect from "effect/Effect"
9
10
  import * as Exit from "effect/Exit"
10
11
  import * as FiberRef from "effect/FiberRef"
@@ -33,27 +34,32 @@ export class IncomingMessage extends Context.Tag("@effect/platform-node-shared/N
33
34
  export const make = Effect.fnUntraced(function*(
34
35
  options: Net.ServerOpts & Net.ListenOptions
35
36
  ) {
36
- const server = yield* Effect.acquireRelease(
37
- Effect.sync(() => Net.createServer(options)),
38
- (server) =>
39
- Effect.async<void>((resume) => {
40
- server.close(() => resume(Effect.void))
41
- })
42
- )
37
+ const errorDeferred = yield* Deferred.make<never, Error>()
38
+ const pending: Array<Net.Socket> = []
39
+ const defaultOnConnection = (socket: Net.Socket) => {
40
+ pending.push(socket)
41
+ }
42
+ let onConnection = defaultOnConnection
43
43
 
44
- yield* Effect.async<void, SocketServer.SocketServerError>((resume) => {
45
- server.once("error", (cause) => {
46
- resume(Effect.fail(
47
- new SocketServer.SocketServerError({
48
- reason: "Open",
49
- cause
50
- })
51
- ))
44
+ yield* Effect.addFinalizer(() =>
45
+ Effect.async<void>((resume) => {
46
+ server.close(() => resume(Effect.void))
52
47
  })
48
+ )
49
+ const server = Net.createServer(options, (conn) => onConnection(conn))
50
+ server.on("error", (cause) => Deferred.unsafeDone(errorDeferred, Exit.fail(cause)))
51
+
52
+ yield* Effect.async<void>((resume) => {
53
53
  server.listen(options, () => {
54
54
  resume(Effect.void)
55
55
  })
56
- })
56
+ }).pipe(
57
+ Effect.raceFirst(Effect.mapError(Deferred.await(errorDeferred), (cause) =>
58
+ new SocketServer.SocketServerError({
59
+ reason: "Open",
60
+ cause
61
+ })))
62
+ )
57
63
 
58
64
  const run = Effect.fnUntraced(function*<R, E, _>(handler: (socket: Socket.Socket) => Effect.Effect<_, E, R>) {
59
65
  const scope = yield* Scope.make()
@@ -61,11 +67,27 @@ export const make = Effect.fnUntraced(function*(
61
67
  Scope.extend(scope)
62
68
  )
63
69
  const run = yield* FiberSet.runtime(fiberSet)<R>()
64
- function onConnection(conn: Net.Socket) {
70
+ function onConnection_(conn: Net.Socket) {
71
+ let error: Error | undefined
72
+ conn.on("error", (err) => {
73
+ error = err
74
+ })
65
75
  pipe(
66
76
  NodeSocket.fromDuplex(
67
77
  Effect.acquireRelease(
68
- Effect.succeed(conn),
78
+ Effect.suspend((): Effect.Effect<Net.Socket, Socket.SocketError> => {
79
+ if (error) {
80
+ return Effect.fail(new Socket.SocketGenericError({ reason: "Open", cause: error }))
81
+ } else if (conn.closed) {
82
+ return Effect.fail(
83
+ new Socket.SocketCloseError({
84
+ reason: "Close",
85
+ code: 1000
86
+ })
87
+ )
88
+ }
89
+ return Effect.succeed(conn)
90
+ }),
69
91
  (conn) =>
70
92
  Effect.sync(() => {
71
93
  if (conn.closed === false) {
@@ -81,12 +103,20 @@ export const make = Effect.fnUntraced(function*(
81
103
  )
82
104
  }
83
105
  return yield* Effect.async<never>((_resume) => {
84
- server.on("connection", onConnection)
85
- return Effect.sync(() => {
86
- server.off("connection", onConnection)
106
+ const prev = onConnection
107
+ onConnection = onConnection_
108
+ pending.forEach(onConnection)
109
+ pending.length = 0
110
+ return Effect.suspend(() => {
111
+ onConnection = prev
112
+ return Scope.close(scope, Exit.void)
87
113
  })
88
114
  }).pipe(
89
- Effect.ensuring(Scope.close(scope, Exit.void))
115
+ Effect.raceFirst(Effect.mapError(Deferred.await(errorDeferred), (cause) =>
116
+ new SocketServer.SocketServerError({
117
+ reason: "Unknown",
118
+ cause
119
+ })))
90
120
  )
91
121
  })
92
122