@effect/platform-node-shared 4.0.0-beta.1 → 4.0.0-beta.100

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.
Files changed (70) hide show
  1. package/README.md +3 -3
  2. package/dist/NodeChildProcessSpawner.d.ts +19 -5
  3. package/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  4. package/dist/NodeChildProcessSpawner.js +105 -118
  5. package/dist/NodeChildProcessSpawner.js.map +1 -1
  6. package/dist/NodeClusterSocket.d.ts +10 -4
  7. package/dist/NodeClusterSocket.d.ts.map +1 -1
  8. package/dist/NodeClusterSocket.js +22 -8
  9. package/dist/NodeClusterSocket.js.map +1 -1
  10. package/dist/NodeCrypto.d.ts +27 -0
  11. package/dist/NodeCrypto.d.ts.map +1 -0
  12. package/dist/NodeCrypto.js +55 -0
  13. package/dist/NodeCrypto.js.map +1 -0
  14. package/dist/NodeFileSystem.d.ts +5 -2
  15. package/dist/NodeFileSystem.d.ts.map +1 -1
  16. package/dist/NodeFileSystem.js +44 -28
  17. package/dist/NodeFileSystem.js.map +1 -1
  18. package/dist/NodePath.d.ts +15 -6
  19. package/dist/NodePath.d.ts.map +1 -1
  20. package/dist/NodePath.js +23 -7
  21. package/dist/NodePath.js.map +1 -1
  22. package/dist/NodeRuntime.d.ts +26 -7
  23. package/dist/NodeRuntime.d.ts.map +1 -1
  24. package/dist/NodeRuntime.js +8 -8
  25. package/dist/NodeRuntime.js.map +1 -1
  26. package/dist/NodeSink.d.ts +33 -4
  27. package/dist/NodeSink.d.ts.map +1 -1
  28. package/dist/NodeSink.js +31 -4
  29. package/dist/NodeSink.js.map +1 -1
  30. package/dist/NodeSocket.d.ts +43 -12
  31. package/dist/NodeSocket.d.ts.map +1 -1
  32. package/dist/NodeSocket.js +41 -17
  33. package/dist/NodeSocket.js.map +1 -1
  34. package/dist/NodeSocketServer.d.ts +25 -8
  35. package/dist/NodeSocketServer.d.ts.map +1 -1
  36. package/dist/NodeSocketServer.js +29 -12
  37. package/dist/NodeSocketServer.js.map +1 -1
  38. package/dist/NodeStdio.d.ts +6 -5
  39. package/dist/NodeStdio.d.ts.map +1 -1
  40. package/dist/NodeStdio.js +26 -10
  41. package/dist/NodeStdio.js.map +1 -1
  42. package/dist/NodeStream.d.ts +76 -20
  43. package/dist/NodeStream.d.ts.map +1 -1
  44. package/dist/NodeStream.js +74 -25
  45. package/dist/NodeStream.js.map +1 -1
  46. package/dist/NodeTerminal.d.ts +9 -2
  47. package/dist/NodeTerminal.d.ts.map +1 -1
  48. package/dist/NodeTerminal.js +13 -3
  49. package/dist/NodeTerminal.js.map +1 -1
  50. package/dist/index.d.ts +52 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +53 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/internal/utils.js +1 -1
  55. package/dist/internal/utils.js.map +1 -1
  56. package/package.json +9 -9
  57. package/src/NodeChildProcessSpawner.ts +157 -148
  58. package/src/NodeClusterSocket.ts +22 -8
  59. package/src/NodeCrypto.ts +60 -0
  60. package/src/NodeFileSystem.ts +58 -30
  61. package/src/NodePath.ts +23 -7
  62. package/src/NodeRuntime.ts +28 -13
  63. package/src/NodeSink.ts +40 -4
  64. package/src/NodeSocket.ts +51 -20
  65. package/src/NodeSocketServer.ts +39 -13
  66. package/src/NodeStdio.ts +42 -24
  67. package/src/NodeStream.ts +97 -33
  68. package/src/NodeTerminal.ts +22 -4
  69. package/src/index.ts +65 -0
  70. package/src/internal/utils.ts +4 -4
@@ -1,5 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Sink adapters for writing Effect chunks into Node writable streams.
3
+ *
4
+ * `fromWritable` creates a `Sink`, `fromWritableChannel` creates a lower-level
5
+ * `Channel`, and `pullIntoWritable` writes from an existing pull loop. All
6
+ * three adapters respect writable-stream backpressure, map writable errors with
7
+ * the supplied `onError` function, and can end the writable when the upstream
8
+ * data is done.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import type { NonEmptyReadonlyArray } from "effect/Array";
5
13
  import * as Channel from "effect/Channel";
@@ -8,8 +16,12 @@ import * as Pull from "effect/Pull";
8
16
  import * as Sink from "effect/Sink";
9
17
  import type { Writable } from "node:stream";
10
18
  /**
19
+ * Creates a `Sink` that writes chunks to a Node writable stream, respecting
20
+ * backpressure, mapping writable errors with `onError`, and ending the stream
21
+ * on completion unless `endOnDone` is `false`.
22
+ *
11
23
  * @category constructors
12
- * @since 1.0.0
24
+ * @since 4.0.0
13
25
  */
14
26
  export declare const fromWritable: <E, A = Uint8Array | string>(options: {
15
27
  readonly evaluate: LazyArg<Writable | NodeJS.WritableStream>;
@@ -18,8 +30,12 @@ export declare const fromWritable: <E, A = Uint8Array | string>(options: {
18
30
  readonly encoding?: BufferEncoding | undefined;
19
31
  }) => Sink.Sink<void, A, never, E>;
20
32
  /**
33
+ * Creates a `Channel` that pulls chunks from upstream and writes them to a
34
+ * Node writable stream, respecting backpressure and optionally ending the
35
+ * writable when upstream is done.
36
+ *
21
37
  * @category constructors
22
- * @since 1.0.0
38
+ * @since 4.0.0
23
39
  */
24
40
  export declare const fromWritableChannel: <IE, E, A = Uint8Array | string>(options: {
25
41
  readonly evaluate: LazyArg<Writable | NodeJS.WritableStream>;
@@ -28,7 +44,20 @@ export declare const fromWritableChannel: <IE, E, A = Uint8Array | string>(optio
28
44
  readonly encoding?: BufferEncoding | undefined;
29
45
  }) => Channel.Channel<never, IE | E, void, NonEmptyReadonlyArray<A>, IE>;
30
46
  /**
31
- * @since 1.0.0
47
+ * Writes Effect chunks into a Node writable stream.
48
+ *
49
+ * **When to use**
50
+ *
51
+ * Use to implement custom Node stream adapters that already have an upstream
52
+ * pull and need direct control over a writable stream.
53
+ *
54
+ * **Details**
55
+ *
56
+ * The loop waits for `drain` when needed, fails on writable errors, and ends
57
+ * the writable on upstream completion unless `endOnDone` is `false`.
58
+ *
59
+ * @category converting
60
+ * @since 4.0.0
32
61
  */
33
62
  export declare const pullIntoWritable: <A, IE, E>(options: {
34
63
  readonly pull: Pull.Pull<NonEmptyReadonlyArray<A>, IE, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSink.d.ts","sourceRoot":"","sources":["../src/NodeSink.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,MAAM,EACrD,SAAS;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAC/C,KACA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAC4D,CAAA;AAE1F;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,MAAM,EAChE,SAAS;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAC/C,KACA,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAIhE,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS;IAClD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAC/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAC/C,KAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CA2BjC,CAAA"}
1
+ {"version":3,"file":"NodeSink.d.ts","sourceRoot":"","sources":["../src/NodeSink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,MAAM,WAC5C;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAC/C,KACA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAC4D,CAAA;AAE1F;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,MAAM,WACvD;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAC/C,KACA,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAIhE,CAAA;AAEJ;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAC/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAA;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAC/C,KAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAkCjC,CAAA"}
package/dist/NodeSink.js CHANGED
@@ -5,13 +5,21 @@ import { identity } from "effect/Function";
5
5
  import * as Pull from "effect/Pull";
6
6
  import * as Sink from "effect/Sink";
7
7
  /**
8
+ * Creates a `Sink` that writes chunks to a Node writable stream, respecting
9
+ * backpressure, mapping writable errors with `onError`, and ending the stream
10
+ * on completion unless `endOnDone` is `false`.
11
+ *
8
12
  * @category constructors
9
- * @since 1.0.0
13
+ * @since 4.0.0
10
14
  */
11
15
  export const fromWritable = options => Sink.fromChannel(Channel.mapDone(fromWritableChannel(options), _ => [_]));
12
16
  /**
17
+ * Creates a `Channel` that pulls chunks from upstream and writes them to a
18
+ * Node writable stream, respecting backpressure and optionally ending the
19
+ * writable when upstream is done.
20
+ *
13
21
  * @category constructors
14
- * @since 1.0.0
22
+ * @since 4.0.0
15
23
  */
16
24
  export const fromWritableChannel = options => Channel.fromTransform(pull => {
17
25
  const writable = options.evaluate();
@@ -22,7 +30,20 @@ export const fromWritableChannel = options => Channel.fromTransform(pull => {
22
30
  }));
23
31
  });
24
32
  /**
25
- * @since 1.0.0
33
+ * Writes Effect chunks into a Node writable stream.
34
+ *
35
+ * **When to use**
36
+ *
37
+ * Use to implement custom Node stream adapters that already have an upstream
38
+ * pull and need direct control over a writable stream.
39
+ *
40
+ * **Details**
41
+ *
42
+ * The loop waits for `drain` when needed, fails on writable errors, and ends
43
+ * the writable on upstream completion unless `endOnDone` is `false`.
44
+ *
45
+ * @category converting
46
+ * @since 4.0.0
26
47
  */
27
48
  export const pullIntoWritable = options => options.pull.pipe(Effect.flatMap(chunk => {
28
49
  let i = 0;
@@ -38,7 +59,13 @@ export const pullIntoWritable = options => options.pull.pipe(Effect.flatMap(chun
38
59
  });
39
60
  }), Effect.forever({
40
61
  disableYield: true
41
- }), options.endOnDone !== false ? Pull.catchDone(_ => {
62
+ }), Effect.raceFirst(Effect.callback(resume => {
63
+ const onError = error => resume(Effect.fail(options.onError(error)));
64
+ options.writable.once("error", onError);
65
+ return Effect.sync(() => {
66
+ options.writable.off("error", onError);
67
+ });
68
+ })), options.endOnDone !== false ? Pull.catchDone(_ => {
42
69
  if ("closed" in options.writable && options.writable.closed) {
43
70
  return Cause.done(_);
44
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSink.js","names":["Cause","Channel","Effect","identity","Pull","Sink","fromWritable","options","fromChannel","mapDone","fromWritableChannel","_","fromTransform","pull","writable","evaluate","succeed","pullIntoWritable","pipe","flatMap","chunk","i","callback","loop","resume","length","success","write","encoding","once","void","forever","disableYield","endOnDone","catchDone","closed","done","end"],"sources":["../src/NodeSink.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAsB,iBAAiB;AACxD,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,IAAI,MAAM,aAAa;AAGnC;;;;AAIA,OAAO,MAAMC,YAAY,GACvBC,OAKC,IAEDF,IAAI,CAACG,WAAW,CAACP,OAAO,CAACQ,OAAO,CAACC,mBAAmB,CAAcH,OAAO,CAAC,EAAGI,CAAC,IAAK,CAACA,CAAC,CAAC,CAAC,CAAC;AAE1F;;;;AAIA,OAAO,MAAMD,mBAAmB,GAC9BH,OAKC,IAEDN,OAAO,CAACW,aAAa,CAAEC,IAAsD,IAAI;EAC/E,MAAMC,QAAQ,GAAGP,OAAO,CAACQ,QAAQ,EAAc;EAC/C,OAAOb,MAAM,CAACc,OAAO,CAACC,gBAAgB,CAAC;IAAE,GAAGV,OAAO;IAAEO,QAAQ;IAAED;EAAI,CAAE,CAAC,CAAC;AACzE,CAAC,CAAC;AAEJ;;;AAGA,OAAO,MAAMI,gBAAgB,GAAcV,OAM1C,IACCA,OAAO,CAACM,IAAI,CAACK,IAAI,CACfhB,MAAM,CAACiB,OAAO,CAAEC,KAAK,IAAI;EACvB,IAAIC,CAAC,GAAG,CAAC;EACT,OAAOnB,MAAM,CAACoB,QAAQ,CAAU,SAASC,IAAIA,CAACC,MAAM;IAClD,OAAOH,CAAC,GAAGD,KAAK,CAACK,MAAM,GAAG;MACxB,MAAMC,OAAO,GAAGnB,OAAO,CAACO,QAAQ,CAACa,KAAK,CAACP,KAAK,CAACC,CAAC,EAAE,CAAC,EAAEd,OAAO,CAACqB,QAAe,CAAC;MAC3E,IAAI,CAACF,OAAO,EAAE;QACZnB,OAAO,CAACO,QAAQ,CAACe,IAAI,CAAC,OAAO,EAAE,MAAON,IAAY,CAACC,MAAM,CAAC,CAAC;QAC3D;MACF;IACF;IACAA,MAAM,CAACtB,MAAM,CAAC4B,IAAI,CAAC;EACrB,CAAC,CAAC;AACJ,CAAC,CAAC,EACF5B,MAAM,CAAC6B,OAAO,CAAC;EAAEC,YAAY,EAAE;AAAI,CAAE,CAAC,EACtCzB,OAAO,CAAC0B,SAAS,KAAK,KAAK,GACzB7B,IAAI,CAAC8B,SAAS,CAAEvB,CAAC,IAAI;EACnB,IAAI,QAAQ,IAAIJ,OAAO,CAACO,QAAQ,IAAIP,OAAO,CAACO,QAAQ,CAACqB,MAAM,EAAE;IAC3D,OAAOnC,KAAK,CAACoC,IAAI,CAACzB,CAAC,CAAC;EACtB;EACA,OAAOT,MAAM,CAACoB,QAAQ,CAAkCE,MAAM,IAAI;IAChEjB,OAAO,CAACO,QAAQ,CAACe,IAAI,CAAC,QAAQ,EAAE,MAAML,MAAM,CAACxB,KAAK,CAACoC,IAAI,CAACzB,CAAC,CAAC,CAAC,CAAC;IAC5DJ,OAAO,CAACO,QAAQ,CAACuB,GAAG,EAAE;EACxB,CAAC,CAAC;AACJ,CAAC,CAAC,GACFlC,QAAQ,CACX","ignoreList":[]}
1
+ {"version":3,"file":"NodeSink.js","names":["Cause","Channel","Effect","identity","Pull","Sink","fromWritable","options","fromChannel","mapDone","fromWritableChannel","_","fromTransform","pull","writable","evaluate","succeed","pullIntoWritable","pipe","flatMap","chunk","i","callback","loop","resume","length","success","write","encoding","once","void","forever","disableYield","raceFirst","onError","error","fail","sync","off","endOnDone","catchDone","closed","done","end"],"sources":["../src/NodeSink.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,50 +1,81 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Node socket adapters for Effect sockets.
3
+ *
4
+ * This module opens `node:net` connections or wraps existing Node `Duplex`
5
+ * streams and presents them as `Socket.Socket` values, socket channels, or
6
+ * layers. It also exposes the current underlying `NetSocket` service for code
7
+ * running inside a socket handler and re-exports the `ws` package namespace.
8
+ *
9
+ * @since 4.0.0
3
10
  */
4
11
  import type { Array } from "effect";
5
12
  import * as Channel from "effect/Channel";
13
+ import * as Context from "effect/Context";
6
14
  import type * as Duration from "effect/Duration";
7
15
  import * as Effect from "effect/Effect";
8
16
  import * as Layer from "effect/Layer";
9
17
  import * as Scope from "effect/Scope";
10
- import * as ServiceMap from "effect/ServiceMap";
11
18
  import * as Socket from "effect/unstable/socket/Socket";
12
19
  import * as Net from "node:net";
13
20
  import type { Duplex } from "node:stream";
14
21
  /**
15
- * @since 1.0.0
16
22
  * @category re-exports
23
+ * @since 4.0.0
17
24
  */
18
25
  export * as NodeWS from "ws";
19
- declare const NetSocket_base: ServiceMap.ServiceClass<NetSocket, "@effect/platform-node/NodeSocket/NetSocket", Net.Socket>;
26
+ declare const NetSocket_base: Context.ServiceClass<NetSocket, "@effect/platform-node/NodeSocket/NetSocket", Net.Socket>;
20
27
  /**
21
- * @since 1.0.0
22
- * @category tags
28
+ * Service tag for the underlying Node `net.Socket` associated with the current
29
+ * socket connection.
30
+ *
31
+ * @category services
32
+ * @since 4.0.0
23
33
  */
24
34
  export declare class NetSocket extends NetSocket_base {
25
35
  }
26
36
  /**
27
- * @since 1.0.0
37
+ * Opens a Node TCP connection as an Effect socket.
38
+ *
39
+ * **When to use**
40
+ *
41
+ * Use to create a scoped `Socket.Socket` from Node `net.createConnection`.
42
+ *
43
+ * **Details**
44
+ *
45
+ * Supports `openTimeout` and closes or destroys the underlying socket when the
46
+ * enclosing scope is finalized.
47
+ *
28
48
  * @category constructors
49
+ * @since 4.0.0
29
50
  */
30
51
  export declare const makeNet: (options: Net.NetConnectOpts & {
31
- readonly openTimeout?: Duration.DurationInput | undefined;
52
+ readonly openTimeout?: Duration.Input | undefined;
32
53
  }) => Effect.Effect<Socket.Socket>;
33
54
  /**
34
- * @since 1.0.0
55
+ * Adapts a Node `Duplex` into a `Socket.Socket`, wiring data events to socket
56
+ * handlers, providing a scoped writer, and mapping open, read, write, and close
57
+ * failures to `SocketError`.
58
+ *
35
59
  * @category constructors
60
+ * @since 4.0.0
36
61
  */
37
62
  export declare const fromDuplex: <RO>(open: Effect.Effect<Duplex, Socket.SocketError, RO>, options?: {
38
- readonly openTimeout?: Duration.DurationInput | undefined;
63
+ readonly openTimeout?: Duration.Input | undefined;
39
64
  }) => Effect.Effect<Socket.Socket, never, Exclude<RO, Scope.Scope>>;
40
65
  /**
41
- * @since 1.0.0
66
+ * Creates a `Channel` over a TCP socket, reading arrays of `Uint8Array`
67
+ * chunks and writing arrays of bytes, strings, or socket close events.
68
+ *
42
69
  * @category constructors
70
+ * @since 4.0.0
43
71
  */
44
72
  export declare const makeNetChannel: <IE = never>(options: Net.NetConnectOpts) => Channel.Channel<Array.NonEmptyReadonlyArray<Uint8Array>, Socket.SocketError | IE, void, Array.NonEmptyReadonlyArray<Uint8Array | string | Socket.CloseEvent>, IE>;
45
73
  /**
46
- * @since 1.0.0
74
+ * Provides a `Socket.Socket` by opening a TCP connection with the supplied
75
+ * Node `net` connection options.
76
+ *
47
77
  * @category layers
78
+ * @since 4.0.0
48
79
  */
49
80
  export declare const layerNet: (options: Net.NetConnectOpts) => Layer.Layer<Socket.Socket, Socket.SocketError>;
50
81
  //# sourceMappingURL=NodeSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../src/NodeSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AACvD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,IAAI,CAAA;;AAE5B;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ;;;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,CAmC3B,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,CA6H3D,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,EAAE,GAAG,KAAK,EACvC,SAAS,GAAG,CAAC,cAAc,KAC1B,OAAO,CAAC,OAAO,CAChB,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,EACvC,MAAM,CAAC,WAAW,GAAG,EAAE,EACvB,IAAI,EACJ,KAAK,CAAC,qBAAqB,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,EACpE,EAAE,CAID,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,KAAK,KAAK,CAAC,KAAK,CACjE,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,CACmC,CAAA"}
1
+ {"version":3,"file":"NodeSocket.d.ts","sourceRoot":"","sources":["../src/NodeSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AACvD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,IAAI,CAAA;;AAE5B;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,YACT,GAAG,CAAC,cAAc,GAAG;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CAClD,KACA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAmC3B,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,QACrB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,YACzC;IACR,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CAClD,KACA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CA4H3D,CAAA;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,EAAE,GAAG,KAAK,WAC9B,GAAG,CAAC,cAAc,KAC1B,OAAO,CAAC,OAAO,CAChB,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,EACvC,MAAM,CAAC,WAAW,GAAG,EAAE,EACvB,IAAI,EACJ,KAAK,CAAC,qBAAqB,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,EACpE,EAAE,CAID,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,KAAK,KAAK,CAAC,KAAK,CACjE,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,CACmC,CAAA"}
@@ -1,31 +1,46 @@
1
1
  import * as Channel from "effect/Channel";
2
+ import * as Context from "effect/Context";
2
3
  import * as Deferred from "effect/Deferred";
3
4
  import * as Effect from "effect/Effect";
4
5
  import * as FiberSet from "effect/FiberSet";
5
6
  import * as Function from "effect/Function";
6
7
  import { identity } from "effect/Function";
8
+ import * as Latch from "effect/Latch";
7
9
  import * as Layer from "effect/Layer";
8
10
  import * as Scope from "effect/Scope";
9
- import * as ServiceMap from "effect/ServiceMap";
10
11
  import * as Socket from "effect/unstable/socket/Socket";
11
12
  import * as Net from "node:net";
12
13
  /**
13
- * @since 1.0.0
14
14
  * @category re-exports
15
+ * @since 4.0.0
15
16
  */
16
17
  export * as NodeWS from "ws";
17
18
  /**
18
- * @since 1.0.0
19
- * @category tags
19
+ * Service tag for the underlying Node `net.Socket` associated with the current
20
+ * socket connection.
21
+ *
22
+ * @category services
23
+ * @since 4.0.0
20
24
  */
21
- export class NetSocket extends /*#__PURE__*/ServiceMap.Service()("@effect/platform-node/NodeSocket/NetSocket") {}
25
+ export class NetSocket extends /*#__PURE__*/Context.Service()("@effect/platform-node/NodeSocket/NetSocket") {}
22
26
  /**
23
- * @since 1.0.0
27
+ * Opens a Node TCP connection as an Effect socket.
28
+ *
29
+ * **When to use**
30
+ *
31
+ * Use to create a scoped `Socket.Socket` from Node `net.createConnection`.
32
+ *
33
+ * **Details**
34
+ *
35
+ * Supports `openTimeout` and closes or destroys the underlying socket when the
36
+ * enclosing scope is finalized.
37
+ *
24
38
  * @category constructors
39
+ * @since 4.0.0
25
40
  */
26
- export const makeNet = options => fromDuplex(Effect.servicesWith(services => {
41
+ export const makeNet = options => fromDuplex(Effect.contextWith(context => {
27
42
  let conn;
28
- return Effect.flatMap(Scope.addFinalizer(ServiceMap.get(services, Scope.Scope), Effect.sync(() => {
43
+ return Effect.flatMap(Scope.addFinalizer(Context.get(context, Scope.Scope), Effect.sync(() => {
29
44
  if (!conn) return;
30
45
  if (conn.closed === false) {
31
46
  if ("destroySoon" in conn) {
@@ -51,13 +66,17 @@ export const makeNet = options => fromDuplex(Effect.servicesWith(services => {
51
66
  }));
52
67
  }), options);
53
68
  /**
54
- * @since 1.0.0
69
+ * Adapts a Node `Duplex` into a `Socket.Socket`, wiring data events to socket
70
+ * handlers, providing a scoped writer, and mapping open, read, write, and close
71
+ * failures to `SocketError`.
72
+ *
55
73
  * @category constructors
74
+ * @since 4.0.0
56
75
  */
57
76
  export const fromDuplex = (open, options) => Effect.withFiber(fiber => {
58
77
  let currentSocket;
59
- const latch = Effect.makeLatchUnsafe(false);
60
- const openServices = fiber.services;
78
+ const latch = Latch.makeUnsafe(false);
79
+ const openServices = fiber.context;
61
80
  const run = (handler, opts) => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
62
81
  const fiberSet = yield* FiberSet.make().pipe(Scope.provide(scope));
63
82
  let conn = undefined;
@@ -70,7 +89,7 @@ export const fromDuplex = (open, options) => Effect.withFiber(fiber => {
70
89
  }));
71
90
  conn = yield* Scope.provide(open, scope).pipe(options?.openTimeout ? Effect.timeoutOrElse({
72
91
  duration: options.openTimeout,
73
- onTimeout: () => Effect.fail(new Socket.SocketError({
92
+ orElse: () => Effect.fail(new Socket.SocketError({
74
93
  reason: new Socket.SocketOpenError({
75
94
  kind: "Timeout",
76
95
  cause: new Error("Connection timed out")
@@ -111,7 +130,7 @@ export const fromDuplex = (open, options) => Effect.withFiber(fiber => {
111
130
  })
112
131
  })));
113
132
  }
114
- })).pipe(Effect.updateServices(input => ServiceMap.merge(openServices, input)), Effect.onExit(() => Effect.sync(() => {
133
+ })).pipe(Effect.updateContext(input => Context.merge(openServices, input)), Effect.onExit(() => Effect.sync(() => {
115
134
  latch.closeUnsafe();
116
135
  currentSocket = undefined;
117
136
  })));
@@ -133,21 +152,26 @@ export const fromDuplex = (open, options) => Effect.withFiber(fiber => {
133
152
  if (!currentSocket || currentSocket.writableEnded) return;
134
153
  currentSocket.end();
135
154
  }));
136
- return Effect.succeed(Socket.Socket.of({
137
- [Socket.TypeId]: Socket.TypeId,
155
+ return Effect.succeed(Socket.make({
138
156
  run,
139
157
  runRaw: run,
140
158
  writer
141
159
  }));
142
160
  });
143
161
  /**
144
- * @since 1.0.0
162
+ * Creates a `Channel` over a TCP socket, reading arrays of `Uint8Array`
163
+ * chunks and writing arrays of bytes, strings, or socket close events.
164
+ *
145
165
  * @category constructors
166
+ * @since 4.0.0
146
167
  */
147
168
  export const makeNetChannel = options => Channel.unwrap(Effect.map(makeNet(options), Socket.toChannelWith()));
148
169
  /**
149
- * @since 1.0.0
170
+ * Provides a `Socket.Socket` by opening a TCP connection with the supplied
171
+ * Node `net` connection options.
172
+ *
150
173
  * @category layers
174
+ * @since 4.0.0
151
175
  */
152
176
  export const layerNet = /*#__PURE__*/Function.flow(makeNet, /*#__PURE__*/Layer.effect(Socket.Socket));
153
177
  //# sourceMappingURL=NodeSocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocket.js","names":["Channel","Deferred","Effect","FiberSet","Function","identity","Layer","Scope","ServiceMap","Socket","Net","NodeWS","NetSocket","Service","makeNet","options","fromDuplex","servicesWith","services","conn","flatMap","addFinalizer","get","sync","closed","destroySoon","destroy","callback","resume","createConnection","once","succeed","on","cause","fail","SocketError","reason","SocketOpenError","kind","open","withFiber","fiber","currentSocket","latch","makeLatchUnsafe","openServices","run","handler","opts","scopedWith","fnUntraced","scope","fiberSet","make","pipe","provide","undefined","off","onData","onEnd","onError","onClose","openTimeout","timeoutOrElse","duration","onTimeout","Error","provideService","runtime","openUnsafe","onOpen","join","chunk","result","isEffect","doneUnsafe","deferred","void","SocketReadError","hadError","SocketCloseError","code","updateServices","input","merge","onExit","closeUnsafe","write","whenOpen","isCloseEvent","SocketWriteError","writer","acquireRelease","writableEnded","end","of","TypeId","runRaw","makeNetChannel","unwrap","map","toChannelWith","layerNet","flow","effect"],"sources":["../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeSocket.js","names":["Channel","Context","Deferred","Effect","FiberSet","Function","identity","Latch","Layer","Scope","Socket","Net","NodeWS","NetSocket","Service","makeNet","options","fromDuplex","contextWith","context","conn","flatMap","addFinalizer","get","sync","closed","destroySoon","destroy","callback","resume","createConnection","once","succeed","on","cause","fail","SocketError","reason","SocketOpenError","kind","open","withFiber","fiber","currentSocket","latch","makeUnsafe","openServices","run","handler","opts","scopedWith","fnUntraced","scope","fiberSet","make","pipe","provide","undefined","off","onData","onEnd","onError","onClose","openTimeout","timeoutOrElse","duration","orElse","Error","provideService","runtime","openUnsafe","onOpen","join","chunk","result","isEffect","doneUnsafe","deferred","void","SocketReadError","hadError","SocketCloseError","code","updateContext","input","merge","onExit","closeUnsafe","write","whenOpen","isCloseEvent","SocketWriteError","writer","acquireRelease","writableEnded","end","runRaw","makeNetChannel","unwrap","map","toChannelWith","layerNet","flow","effect"],"sources":["../src/NodeSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,41 +1,58 @@
1
+ import * as Context from "effect/Context";
1
2
  import * as Effect from "effect/Effect";
2
3
  import * as Layer from "effect/Layer";
3
4
  import * as Scope from "effect/Scope";
4
- import * as ServiceMap from "effect/ServiceMap";
5
5
  import * as Socket from "effect/unstable/socket/Socket";
6
6
  import * as SocketServer from "effect/unstable/socket/SocketServer";
7
7
  import type * as Http from "node:http";
8
8
  import * as Net from "node:net";
9
9
  import * as NodeSocket from "./NodeSocket.ts";
10
10
  import { NodeWS } from "./NodeSocket.ts";
11
- declare const IncomingMessage_base: ServiceMap.ServiceClass<IncomingMessage, "@effect/platform-node-shared/NodeSocketServer/IncomingMessage", Http.IncomingMessage>;
11
+ declare const IncomingMessage_base: Context.ServiceClass<IncomingMessage, "@effect/platform-node-shared/NodeSocketServer/IncomingMessage", Http.IncomingMessage>;
12
12
  /**
13
- * @since 1.0.0
14
- * @category tags
13
+ * Service tag for the Node `IncomingMessage` associated with the current
14
+ * WebSocket server connection.
15
+ *
16
+ * @category services
17
+ * @since 4.0.0
15
18
  */
16
19
  export declare class IncomingMessage extends IncomingMessage_base {
17
20
  }
18
21
  /**
19
- * @since 1.0.0
22
+ * Creates a scoped TCP `SocketServer` from a Node `net.Server`, starts
23
+ * listening with the supplied options, queues pending connections until `run`
24
+ * is called, and closes the server when the scope ends.
25
+ *
20
26
  * @category constructors
27
+ * @since 4.0.0
21
28
  */
22
29
  export declare const make: (options: Net.ServerOpts & Net.ListenOptions) => Effect.Effect<{
23
30
  readonly address: SocketServer.Address;
24
31
  readonly run: <R, E, _>(handler: (socket: Socket.Socket) => Effect.Effect<_, E, R>) => Effect.Effect<never, SocketServer.SocketServerError, R>;
25
32
  }, SocketServer.SocketServerError, Scope.Scope>;
26
33
  /**
27
- * @since 1.0.0
34
+ * Provides a TCP `SocketServer` by creating and managing a scoped Node
35
+ * `net.Server` with the supplied server and listen options.
36
+ *
28
37
  * @category layers
38
+ * @since 4.0.0
29
39
  */
30
40
  export declare const layer: (options: Net.ServerOpts & Net.ListenOptions) => Layer.Layer<SocketServer.SocketServer, SocketServer.SocketServerError>;
31
41
  /**
32
- * @since 1.0.0
42
+ * Creates a scoped WebSocket `SocketServer` backed by the `ws` package,
43
+ * providing the WebSocket and its Node `IncomingMessage` to connection
44
+ * handlers and closing the server when the scope ends.
45
+ *
33
46
  * @category constructors
47
+ * @since 4.0.0
34
48
  */
35
49
  export declare const makeWebSocket: (options: NodeWS.ServerOptions<typeof NodeWS.WebSocket, typeof Http.IncomingMessage>) => Effect.Effect<SocketServer.SocketServer["Service"], SocketServer.SocketServerError, Scope.Scope>;
36
50
  /**
37
- * @since 1.0.0
51
+ * Provides a WebSocket `SocketServer` backed by the `ws` package and managed
52
+ * with the supplied server options.
53
+ *
38
54
  * @category layers
55
+ * @since 4.0.0
39
56
  */
40
57
  export declare const layerWebSocket: (options: NodeSocket.NodeWS.ServerOptions<typeof NodeSocket.NodeWS.WebSocket, typeof Http.IncomingMessage>) => Layer.Layer<SocketServer.SocketServer, SocketServer.SocketServerError>;
41
58
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSocketServer.d.ts","sourceRoot":"","sources":["../src/NodeSocketServer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AACvD,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAA;AACnE,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;;AAExC;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAG+B;CAAG;AAEvE;;;GAGG;AACH,eAAO,MAAM,IAAI;;;+CA6Gf,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,KACxC,KAAK,CAAC,KAAK,CACd,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,iBAAiB,CACgC,CAAA;AAEhE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KAChF,MAAM,CAAC,MAAM,CAChB,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,EACpC,YAAY,CAAC,iBAAiB,EAC9B,KAAK,CAAC,KAAK,CAyFX,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,CAC3B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KACtG,KAAK,CAAC,KAAK,CACd,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,iBAAiB,CACyC,CAAA"}
1
+ {"version":3,"file":"NodeSocketServer.d.ts","sourceRoot":"","sources":["../src/NodeSocketServer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AACvD,OAAO,KAAK,YAAY,MAAM,qCAAqC,CAAA;AACnE,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;;AAExC;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,oBAG+B;CAAG;AAEvE;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI;;;+CA6Gf,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,KACxC,KAAK,CAAC,KAAK,CACd,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,iBAAiB,CACgC,CAAA;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KAChF,MAAM,CAAC,MAAM,CAChB,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,EACpC,YAAY,CAAC,iBAAiB,EAC9B,KAAK,CAAC,KAAK,CAyFX,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,CAC3B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KACtG,KAAK,CAAC,KAAK,CACd,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,iBAAiB,CACyC,CAAA"}
@@ -1,3 +1,4 @@
1
+ import * as Context from "effect/Context";
1
2
  import * as Deferred from "effect/Deferred";
2
3
  import * as Effect from "effect/Effect";
3
4
  import * as Exit from "effect/Exit";
@@ -7,20 +8,26 @@ import * as Function from "effect/Function";
7
8
  import * as Layer from "effect/Layer";
8
9
  import * as References from "effect/References";
9
10
  import * as Scope from "effect/Scope";
10
- import * as ServiceMap from "effect/ServiceMap";
11
11
  import * as Socket from "effect/unstable/socket/Socket";
12
12
  import * as SocketServer from "effect/unstable/socket/SocketServer";
13
13
  import * as Net from "node:net";
14
14
  import * as NodeSocket from "./NodeSocket.js";
15
15
  import { NodeWS } from "./NodeSocket.js";
16
16
  /**
17
- * @since 1.0.0
18
- * @category tags
17
+ * Service tag for the Node `IncomingMessage` associated with the current
18
+ * WebSocket server connection.
19
+ *
20
+ * @category services
21
+ * @since 4.0.0
19
22
  */
20
- export class IncomingMessage extends /*#__PURE__*/ServiceMap.Service()("@effect/platform-node-shared/NodeSocketServer/IncomingMessage") {}
23
+ export class IncomingMessage extends /*#__PURE__*/Context.Service()("@effect/platform-node-shared/NodeSocketServer/IncomingMessage") {}
21
24
  /**
22
- * @since 1.0.0
25
+ * Creates a scoped TCP `SocketServer` from a Node `net.Server`, starts
26
+ * listening with the supplied options, queues pending connections until `run`
27
+ * is called, and closes the server when the scope ends.
28
+ *
23
29
  * @category constructors
30
+ * @since 4.0.0
24
31
  */
25
32
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
26
33
  const errorDeferred = Deferred.makeUnsafe();
@@ -50,7 +57,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
50
57
  }))));
51
58
  const run = Effect.fnUntraced(function* (handler) {
52
59
  const scope = yield* Scope.make();
53
- const services = ServiceMap.omit(Scope.Scope)(yield* Effect.services());
60
+ const services = Context.omit(Scope.Scope)(yield* Effect.context());
54
61
  const trackFiber = Fiber.runIn(scope);
55
62
  const prevOnConnection = onConnection;
56
63
  onConnection = function (conn) {
@@ -78,7 +85,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
78
85
  if (conn.closed === false) {
79
86
  conn.destroySoon();
80
87
  }
81
- }))), Effect.flatMap(handler), Effect.catchCause(reportUnhandledError), Effect.runForkWith(ServiceMap.add(services, NodeSocket.NetSocket, conn)), trackFiber);
88
+ }))), Effect.flatMap(handler), Effect.catchCause(reportUnhandledError), Effect.runForkWith(Context.add(services, NodeSocket.NetSocket, conn)), trackFiber);
82
89
  };
83
90
  pending.forEach(conn => {
84
91
  conn.removeAllListeners("error");
@@ -107,13 +114,20 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
107
114
  });
108
115
  });
109
116
  /**
110
- * @since 1.0.0
117
+ * Provides a TCP `SocketServer` by creating and managing a scoped Node
118
+ * `net.Server` with the supplied server and listen options.
119
+ *
111
120
  * @category layers
121
+ * @since 4.0.0
112
122
  */
113
123
  export const layer = /*#__PURE__*/Function.flow(make, /*#__PURE__*/Layer.effect(SocketServer.SocketServer));
114
124
  /**
115
- * @since 1.0.0
125
+ * Creates a scoped WebSocket `SocketServer` backed by the `ws` package,
126
+ * providing the WebSocket and its Node `IncomingMessage` to connection
127
+ * handlers and closing the server when the scope ends.
128
+ *
116
129
  * @category constructors
130
+ * @since 4.0.0
117
131
  */
118
132
  export const makeWebSocket = /*#__PURE__*/Effect.fnUntraced(function* (options) {
119
133
  const server = yield* Effect.acquireRelease(Effect.sync(() => new NodeWS.WebSocketServer(options)), server => Effect.callback(resume => {
@@ -143,7 +157,7 @@ export const makeWebSocket = /*#__PURE__*/Effect.fnUntraced(function* (options)
143
157
  });
144
158
  const run = Effect.fnUntraced(function* (handler) {
145
159
  const scope = yield* Scope.make();
146
- const services = ServiceMap.omit(Scope.Scope)(yield* Effect.services());
160
+ const services = Context.omit(Scope.Scope)(yield* Effect.context());
147
161
  const trackFiber = Fiber.runIn(scope);
148
162
  const prevOnConnection = onConnection;
149
163
  onConnection = function (conn, req) {
@@ -152,7 +166,7 @@ export const makeWebSocket = /*#__PURE__*/Effect.fnUntraced(function* (options)
152
166
  map.set(Socket.WebSocket.key, conn);
153
167
  pipe(Socket.fromWebSocket(Effect.acquireRelease(Effect.succeed(conn), conn => Effect.sync(() => {
154
168
  conn.close();
155
- }))), Effect.flatMap(handler), Effect.catchCause(reportUnhandledError), Effect.runForkWith(ServiceMap.makeUnsafe(map)), trackFiber);
169
+ }))), Effect.flatMap(handler), Effect.catchCause(reportUnhandledError), Effect.runForkWith(Context.makeUnsafe(map)), trackFiber);
156
170
  };
157
171
  for (const [conn, req] of pendingConnections) {
158
172
  onConnection(conn, req);
@@ -178,8 +192,11 @@ export const makeWebSocket = /*#__PURE__*/Effect.fnUntraced(function* (options)
178
192
  });
179
193
  });
180
194
  /**
181
- * @since 1.0.0
195
+ * Provides a WebSocket `SocketServer` backed by the `ws` package and managed
196
+ * with the supplied server options.
197
+ *
182
198
  * @category layers
199
+ * @since 4.0.0
183
200
  */
184
201
  export const layerWebSocket = /*#__PURE__*/Function.flow(makeWebSocket, /*#__PURE__*/Layer.effect(SocketServer.SocketServer));
185
202
  const reportUnhandledError = cause => Effect.withFiber(fiber => {