@effect/platform-node 4.0.0-beta.7 → 4.0.0-beta.70

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 (119) hide show
  1. package/dist/Mime.d.ts +3 -3
  2. package/dist/Mime.js +3 -3
  3. package/dist/NodeChildProcessSpawner.d.ts +1 -1
  4. package/dist/NodeChildProcessSpawner.js +1 -1
  5. package/dist/NodeClusterHttp.d.ts +49 -7
  6. package/dist/NodeClusterHttp.d.ts.map +1 -1
  7. package/dist/NodeClusterHttp.js +20 -10
  8. package/dist/NodeClusterHttp.js.map +1 -1
  9. package/dist/NodeClusterSocket.d.ts +57 -11
  10. package/dist/NodeClusterSocket.d.ts.map +1 -1
  11. package/dist/NodeClusterSocket.js +57 -11
  12. package/dist/NodeClusterSocket.js.map +1 -1
  13. package/dist/NodeCrypto.d.ts +10 -0
  14. package/dist/NodeCrypto.d.ts.map +1 -0
  15. package/dist/NodeCrypto.js +14 -0
  16. package/dist/NodeCrypto.js.map +1 -0
  17. package/dist/NodeFileSystem.d.ts +4 -2
  18. package/dist/NodeFileSystem.d.ts.map +1 -1
  19. package/dist/NodeFileSystem.js +22 -3
  20. package/dist/NodeFileSystem.js.map +1 -1
  21. package/dist/NodeHttpClient.d.ts +102 -24
  22. package/dist/NodeHttpClient.d.ts.map +1 -1
  23. package/dist/NodeHttpClient.js +124 -28
  24. package/dist/NodeHttpClient.js.map +1 -1
  25. package/dist/NodeHttpIncomingMessage.d.ts +30 -9
  26. package/dist/NodeHttpIncomingMessage.d.ts.map +1 -1
  27. package/dist/NodeHttpIncomingMessage.js +34 -8
  28. package/dist/NodeHttpIncomingMessage.js.map +1 -1
  29. package/dist/NodeHttpPlatform.d.ts +10 -4
  30. package/dist/NodeHttpPlatform.d.ts.map +1 -1
  31. package/dist/NodeHttpPlatform.js +34 -7
  32. package/dist/NodeHttpPlatform.js.map +1 -1
  33. package/dist/NodeHttpServer.d.ts +56 -16
  34. package/dist/NodeHttpServer.d.ts.map +1 -1
  35. package/dist/NodeHttpServer.js +117 -49
  36. package/dist/NodeHttpServer.js.map +1 -1
  37. package/dist/NodeHttpServerRequest.d.ts +29 -3
  38. package/dist/NodeHttpServerRequest.d.ts.map +1 -1
  39. package/dist/NodeHttpServerRequest.js +9 -2
  40. package/dist/NodeHttpServerRequest.js.map +1 -1
  41. package/dist/NodeMultipart.d.ts +32 -4
  42. package/dist/NodeMultipart.d.ts.map +1 -1
  43. package/dist/NodeMultipart.js +32 -4
  44. package/dist/NodeMultipart.js.map +1 -1
  45. package/dist/NodePath.d.ts +15 -6
  46. package/dist/NodePath.d.ts.map +1 -1
  47. package/dist/NodePath.js +30 -7
  48. package/dist/NodePath.js.map +1 -1
  49. package/dist/NodeRedis.d.ts +38 -9
  50. package/dist/NodeRedis.d.ts.map +1 -1
  51. package/dist/NodeRedis.js +41 -12
  52. package/dist/NodeRedis.js.map +1 -1
  53. package/dist/NodeRuntime.d.ts +27 -36
  54. package/dist/NodeRuntime.d.ts.map +1 -1
  55. package/dist/NodeRuntime.js +24 -13
  56. package/dist/NodeRuntime.js.map +1 -1
  57. package/dist/NodeServices.d.ts +29 -5
  58. package/dist/NodeServices.d.ts.map +1 -1
  59. package/dist/NodeServices.js +7 -3
  60. package/dist/NodeServices.js.map +1 -1
  61. package/dist/NodeSink.d.ts +2 -2
  62. package/dist/NodeSink.js +2 -2
  63. package/dist/NodeSocket.d.ts +18 -3
  64. package/dist/NodeSocket.d.ts.map +1 -1
  65. package/dist/NodeSocket.js +36 -4
  66. package/dist/NodeSocket.js.map +1 -1
  67. package/dist/NodeSocketServer.d.ts +2 -2
  68. package/dist/NodeSocketServer.js +2 -2
  69. package/dist/NodeStdio.d.ts +5 -2
  70. package/dist/NodeStdio.d.ts.map +1 -1
  71. package/dist/NodeStdio.js +22 -3
  72. package/dist/NodeStdio.js.map +1 -1
  73. package/dist/NodeStream.d.ts +2 -2
  74. package/dist/NodeStream.js +2 -2
  75. package/dist/NodeTerminal.d.ts +8 -2
  76. package/dist/NodeTerminal.d.ts.map +1 -1
  77. package/dist/NodeTerminal.js +19 -3
  78. package/dist/NodeTerminal.js.map +1 -1
  79. package/dist/NodeWorker.d.ts +9 -2
  80. package/dist/NodeWorker.d.ts.map +1 -1
  81. package/dist/NodeWorker.js +31 -6
  82. package/dist/NodeWorker.js.map +1 -1
  83. package/dist/NodeWorkerRunner.d.ts +5 -1
  84. package/dist/NodeWorkerRunner.d.ts.map +1 -1
  85. package/dist/NodeWorkerRunner.js +27 -5
  86. package/dist/NodeWorkerRunner.js.map +1 -1
  87. package/dist/Undici.d.ts +3 -3
  88. package/dist/Undici.js +3 -3
  89. package/dist/index.d.ts +376 -24
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +376 -24
  92. package/dist/index.js.map +1 -1
  93. package/package.json +9 -9
  94. package/src/Mime.ts +3 -3
  95. package/src/NodeChildProcessSpawner.ts +1 -1
  96. package/src/NodeClusterHttp.ts +54 -11
  97. package/src/NodeClusterSocket.ts +57 -11
  98. package/src/NodeCrypto.ts +16 -0
  99. package/src/NodeFileSystem.ts +22 -3
  100. package/src/NodeHttpClient.ts +132 -33
  101. package/src/NodeHttpIncomingMessage.ts +42 -12
  102. package/src/NodeHttpPlatform.ts +35 -6
  103. package/src/NodeHttpServer.ts +139 -53
  104. package/src/NodeHttpServerRequest.ts +29 -3
  105. package/src/NodeMultipart.ts +32 -4
  106. package/src/NodePath.ts +30 -7
  107. package/src/NodeRedis.ts +43 -14
  108. package/src/NodeRuntime.ts +42 -37
  109. package/src/NodeServices.ts +31 -5
  110. package/src/NodeSink.ts +2 -2
  111. package/src/NodeSocket.ts +41 -4
  112. package/src/NodeSocketServer.ts +2 -2
  113. package/src/NodeStdio.ts +22 -3
  114. package/src/NodeStream.ts +2 -2
  115. package/src/NodeTerminal.ts +19 -3
  116. package/src/NodeWorker.ts +31 -6
  117. package/src/NodeWorkerRunner.ts +27 -5
  118. package/src/Undici.ts +3 -3
  119. package/src/index.ts +377 -24
package/dist/Mime.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  import Mime from "mime";
5
5
  /**
6
- * @since 1.0.0
7
6
  * @category re-exports
7
+ * @since 4.0.0
8
8
  */
9
9
  export * from "mime";
10
10
  /**
11
- * @since 1.0.0
12
11
  * @category re-exports
12
+ * @since 4.0.0
13
13
  */
14
14
  export default Mime;
15
15
  //# sourceMappingURL=Mime.d.ts.map
package/dist/Mime.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /* oxlint-disable no-named-as-default */
2
2
  /**
3
- * @since 1.0.0
3
+ * @since 4.0.0
4
4
  */
5
5
  import Mime from "mime";
6
6
  /**
7
- * @since 1.0.0
8
7
  * @category re-exports
8
+ * @since 4.0.0
9
9
  */
10
10
  export * from "mime";
11
11
  /**
12
- * @since 1.0.0
13
12
  * @category re-exports
13
+ * @since 4.0.0
14
14
  */
15
15
  export default Mime;
16
16
  //# sourceMappingURL=Mime.js.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Node.js implementation of `ChildProcessSpawner`.
3
3
  *
4
- * @since 1.0.0
4
+ * @since 4.0.0
5
5
  */
6
6
  export * from "@effect/platform-node-shared/NodeChildProcessSpawner";
7
7
  //# sourceMappingURL=NodeChildProcessSpawner.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Node.js implementation of `ChildProcessSpawner`.
3
3
  *
4
- * @since 1.0.0
4
+ * @since 4.0.0
5
5
  */
6
6
  export * from "@effect/platform-node-shared/NodeChildProcessSpawner";
7
7
  //# sourceMappingURL=NodeChildProcessSpawner.js.map
@@ -1,5 +1,38 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `NodeClusterHttp` module provides the Node.js HTTP and WebSocket
3
+ * transports for Effect Cluster runners. It wires `HttpRunner` to the Node HTTP
4
+ * server, supplies Undici and WebSocket client protocols, and builds a complete
5
+ * sharding layer with serialization, runner health, runner storage, and message
6
+ * storage.
7
+ *
8
+ * **Common tasks**
9
+ *
10
+ * - Run a Node process as a cluster runner over HTTP or WebSocket with
11
+ * {@link layer}
12
+ * - Connect a client-only process to an existing HTTP cluster without starting
13
+ * a runner server
14
+ * - Use SQL-backed storage for durable multi-process clusters, `local` storage
15
+ * for short-lived development, or `byo` storage when the deployment owns the
16
+ * persistence boundary
17
+ * - Check runner health with protocol pings or Kubernetes pod readiness through
18
+ * {@link layerK8sHttpClient}
19
+ *
20
+ * **Gotchas**
21
+ *
22
+ * - `runnerAddress` is the host and port advertised to other runners; set
23
+ * `runnerListenAddress` when the local bind address differs from the
24
+ * externally reachable address
25
+ * - The HTTP and WebSocket transports serve runner RPCs at the default
26
+ * `HttpRunner` route, so proxies and load balancers must preserve the path
27
+ * and allow WebSocket upgrades when `transport` is `"websocket"`
28
+ * - `clientOnly` does not start an HTTP server or receive shard assignments
29
+ * - SQL storage is the default; `local` storage is in-memory/noop and `byo`
30
+ * requires the surrounding application to provide both runner and message
31
+ * storage services
32
+ * - Ping health checks use the selected transport and serialization, so route,
33
+ * port, proxy, or codec mismatches can make a runner appear unhealthy
34
+ *
35
+ * @since 4.0.0
3
36
  */
4
37
  import type * as Config from "effect/Config";
5
38
  import * as Layer from "effect/Layer";
@@ -16,13 +49,19 @@ import type { SqlClient } from "effect/unstable/sql/SqlClient";
16
49
  import type { NodeServices } from "./NodeServices.ts";
17
50
  export {
18
51
  /**
19
- * @since 1.0.0
20
- * @category Re-exports
52
+ * Provides the Kubernetes HTTP client layer used by Kubernetes runner health checks.
53
+ *
54
+ * @category re-exports
55
+ * @since 4.0.0
21
56
  */
22
57
  layerK8sHttpClient } from "./NodeClusterSocket.ts";
23
58
  /**
24
- * @since 1.0.0
25
- * @category Layers
59
+ * Builds the Node cluster HTTP/WebSocket sharding layer, configuring runner
60
+ * transport, RPC serialization, message storage, runner health checks, and
61
+ * optional client-only mode.
62
+ *
63
+ * @category layers
64
+ * @since 4.0.0
26
65
  */
27
66
  export declare const layer: <const ClientOnly extends boolean = false, const Storage extends "local" | "sql" | "byo" = never>(options: {
28
67
  readonly transport: "http" | "websocket";
@@ -37,8 +76,11 @@ export declare const layer: <const ClientOnly extends boolean = false, const Sto
37
76
  readonly shardingConfig?: Partial<ShardingConfig.ShardingConfig["Service"]> | undefined;
38
77
  }) => ClientOnly extends true ? Layer.Layer<Sharding | Runners.Runners | ("byo" extends Storage ? never : MessageStorage.MessageStorage), Config.ConfigError, "local" extends Storage ? never : "byo" extends Storage ? (MessageStorage.MessageStorage | RunnerStorage.RunnerStorage) : SqlClient> : Layer.Layer<Sharding | Runners.Runners | ("byo" extends Storage ? never : MessageStorage.MessageStorage), ServeError | Config.ConfigError, "local" extends Storage ? never : "byo" extends Storage ? (MessageStorage.MessageStorage | RunnerStorage.RunnerStorage) : SqlClient>;
39
78
  /**
40
- * @since 1.0.0
41
- * @category Layers
79
+ * Provides the HTTP server and Node HTTP services used by cluster runners,
80
+ * listening on `ShardingConfig.runnerListenAddress` or `runnerAddress`.
81
+ *
82
+ * @category layers
83
+ * @since 4.0.0
42
84
  */
43
85
  export declare const layerHttpServer: Layer.Layer<HttpPlatform | Etag.Generator | NodeServices | HttpServer, ServeError, ShardingConfig.ShardingConfig>;
44
86
  //# sourceMappingURL=NodeClusterHttp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterHttp.d.ts","sourceRoot":"","sources":["../src/NodeClusterHttp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAGxE,OAAO,KAAK,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAK9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGrD,OAAO;AACL;;;GAGG;AACH,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAE/B;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK,EACxC,KAAK,CAAC,OAAO,SAAS,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EACrD,SAAS;IACT,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5C,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA;CACxF,KAAG,UAAU,SAAS,IAAI,GAAG,KAAK,CAAC,KAAK,CACrC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,MAAM,CAAC,WAAW,EAClB,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CACd,GACD,KAAK,CAAC,KAAK,CACT,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,UAAU,GAAG,MAAM,CAAC,WAAW,EAC/B,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CAiDhB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CACrC,YAAY,GACZ,IAAI,CAAC,SAAS,GACd,YAAY,GACZ,UAAU,EACZ,UAAU,EACV,cAAc,CAAC,cAAc,CAQV,CAAA"}
1
+ {"version":3,"file":"NodeClusterHttp.d.ts","sourceRoot":"","sources":["../src/NodeClusterHttp.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Layer from "effect/Layer";
3
+ import * as Option from "effect/Option";
3
4
  import * as HttpRunner from "effect/unstable/cluster/HttpRunner";
4
5
  import * as MessageStorage from "effect/unstable/cluster/MessageStorage";
5
6
  import * as RunnerHealth from "effect/unstable/cluster/RunnerHealth";
@@ -16,13 +17,19 @@ import * as NodeHttpServer from "./NodeHttpServer.js";
16
17
  import * as NodeSocket from "./NodeSocket.js";
17
18
  export {
18
19
  /**
19
- * @since 1.0.0
20
- * @category Re-exports
20
+ * Provides the Kubernetes HTTP client layer used by Kubernetes runner health checks.
21
+ *
22
+ * @category re-exports
23
+ * @since 4.0.0
21
24
  */
22
25
  layerK8sHttpClient } from "./NodeClusterSocket.js";
23
26
  /**
24
- * @since 1.0.0
25
- * @category Layers
27
+ * Builds the Node cluster HTTP/WebSocket sharding layer, configuring runner
28
+ * transport, RPC serialization, message storage, runner health checks, and
29
+ * optional client-only mode.
30
+ *
31
+ * @category layers
32
+ * @since 4.0.0
26
33
  */
27
34
  export const layer = options => {
28
35
  const layer = options.clientOnly
@@ -34,15 +41,18 @@ export const layer = options => {
34
41
  return layer.pipe(Layer.provide(runnerHealth), Layer.provideMerge(options?.storage === "local" ? MessageStorage.layerNoop : options?.storage === "byo" ? Layer.empty : Layer.orDie(SqlMessageStorage.layer)), Layer.provide(options?.storage === "local" ? RunnerStorage.layerMemory : options?.storage === "byo" ? Layer.empty : Layer.orDie(SqlRunnerStorage.layer)), Layer.provide(ShardingConfig.layerFromEnv(options?.shardingConfig)), Layer.provide(options?.serialization === "ndjson" ? RpcSerialization.layerNdjson : RpcSerialization.layerMsgPack));
35
42
  };
36
43
  /**
37
- * @since 1.0.0
38
- * @category Layers
44
+ * Provides the HTTP server and Node HTTP services used by cluster runners,
45
+ * listening on `ShardingConfig.runnerListenAddress` or `runnerAddress`.
46
+ *
47
+ * @category layers
48
+ * @since 4.0.0
39
49
  */
40
50
  export const layerHttpServer = /*#__PURE__*/Effect.gen(function* () {
41
51
  const config = yield* ShardingConfig.ShardingConfig;
42
- const listenAddress = config.runnerListenAddress ?? config.runnerAddress;
43
- if (listenAddress === undefined) {
44
- return yield* Effect.die("NodeClusterHttp.layerHttpServer: ShardingConfig.runnerAddress is undefined");
52
+ const listenAddress = Option.orElse(config.runnerListenAddress, () => config.runnerAddress);
53
+ if (Option.isNone(listenAddress)) {
54
+ return yield* Effect.die("NodeClusterHttp.layerHttpServer: ShardingConfig.runnerAddress is None");
45
55
  }
46
- return NodeHttpServer.layer(createServer, listenAddress);
56
+ return NodeHttpServer.layer(createServer, listenAddress.value);
47
57
  }).pipe(Layer.unwrap);
48
58
  //# sourceMappingURL=NodeClusterHttp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterHttp.js","names":["Effect","Layer","HttpRunner","MessageStorage","RunnerHealth","Runners","RunnerStorage","ShardingConfig","SqlMessageStorage","SqlRunnerStorage","RpcSerialization","createServer","layerK8sHttpClient","NodeHttpClient","NodeHttpServer","NodeSocket","layer","options","clientOnly","transport","provide","layerHttpClientOnly","layerUndici","layerWebsocketClientOnly","layerWebSocketConstructor","layerHttp","layerHttpServer","layerWebsocket","runnerHealth","empty","layerK8s","runnerHealthK8s","pipe","layerPing","layerRpc","layerClientProtocolHttpDefault","layerClientProtocolWebsocketDefault","provideMerge","storage","layerNoop","orDie","layerMemory","layerFromEnv","shardingConfig","serialization","layerNdjson","layerMsgPack","gen","config","listenAddress","runnerListenAddress","runnerAddress","undefined","die","unwrap"],"sources":["../src/NodeClusterHttp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeClusterHttp.js","names":["Effect","Layer","Option","HttpRunner","MessageStorage","RunnerHealth","Runners","RunnerStorage","ShardingConfig","SqlMessageStorage","SqlRunnerStorage","RpcSerialization","createServer","layerK8sHttpClient","NodeHttpClient","NodeHttpServer","NodeSocket","layer","options","clientOnly","transport","provide","layerHttpClientOnly","layerUndici","layerWebsocketClientOnly","layerWebSocketConstructor","layerHttp","layerHttpServer","layerWebsocket","runnerHealth","empty","layerK8s","runnerHealthK8s","pipe","layerPing","layerRpc","layerClientProtocolHttpDefault","layerClientProtocolWebsocketDefault","provideMerge","storage","layerNoop","orDie","layerMemory","layerFromEnv","shardingConfig","serialization","layerNdjson","layerMsgPack","gen","config","listenAddress","orElse","runnerListenAddress","runnerAddress","isNone","die","value","unwrap"],"sources":["../src/NodeClusterHttp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,34 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `NodeClusterSocket` module provides the Node.js socket transport for
3
+ * Effect Cluster runners. It wires `SocketRunner` to Node TCP sockets, supplies
4
+ * RPC client and server protocol layers, and builds a complete sharding layer
5
+ * with serialization, runner health, runner storage, and message storage.
6
+ *
7
+ * **Common tasks**
8
+ *
9
+ * - Run a Node process as a cluster runner over raw TCP sockets with
10
+ * {@link layer}
11
+ * - Connect a client-only process to an existing socket cluster without
12
+ * starting a runner server
13
+ * - Use SQL-backed storage for durable multi-process clusters, `local` storage
14
+ * for short-lived development, or `byo` storage when the deployment owns the
15
+ * persistence boundary
16
+ * - Check runner health with socket pings or Kubernetes pod readiness through
17
+ * {@link layerK8sHttpClient}
18
+ *
19
+ * **Gotchas**
20
+ *
21
+ * - `runnerAddress` is the host and port advertised to other runners; set
22
+ * `runnerListenAddress` when the local bind address differs from the
23
+ * externally reachable address
24
+ * - The socket transport is point-to-point RPC, not cluster gossip: runner
25
+ * membership, shard ownership, and persisted delivery are coordinated through
26
+ * `RunnerStorage`, `MessageStorage`, and `RunnerHealth`
27
+ * - `clientOnly` does not start a socket server or receive shard assignments
28
+ * - Ping health checks use the same socket protocol, so unreachable ports,
29
+ * firewalls, or serialization mismatches can make a runner appear unhealthy
30
+ *
31
+ * @since 4.0.0
3
32
  */
4
33
  import { layerClientProtocol, layerSocketServer } from "@effect/platform-node-shared/NodeClusterSocket";
5
34
  import type { ConfigError } from "effect/Config";
@@ -15,18 +44,28 @@ import type { SqlClient } from "effect/unstable/sql/SqlClient";
15
44
  import * as NodeHttpClient from "./NodeHttpClient.ts";
16
45
  export {
17
46
  /**
18
- * @since 1.0.0
19
- * @category Re-exports
47
+ * Provides the cluster `RpcClientProtocol` using the shared socket client
48
+ * implementation.
49
+ *
50
+ * @category re-exports
51
+ * @since 4.0.0
20
52
  */
21
53
  layerClientProtocol,
22
54
  /**
23
- * @since 1.0.0
24
- * @category Re-exports
55
+ * Provides the socket server used by Node cluster runners through the shared
56
+ * socket server implementation.
57
+ *
58
+ * @category re-exports
59
+ * @since 4.0.0
25
60
  */
26
61
  layerSocketServer };
27
62
  /**
28
- * @since 1.0.0
29
- * @category Layers
63
+ * Builds the Node cluster socket sharding layer, configuring RPC
64
+ * serialization, message storage, runner health checks, and optional
65
+ * client-only mode.
66
+ *
67
+ * @category layers
68
+ * @since 4.0.0
30
69
  */
31
70
  export declare const layer: <const ClientOnly extends boolean = false, const Storage extends "local" | "sql" | "byo" = never>(options?: {
32
71
  readonly serialization?: "msgpack" | "ndjson" | undefined;
@@ -40,13 +79,20 @@ export declare const layer: <const ClientOnly extends boolean = false, const Sto
40
79
  readonly shardingConfig?: Partial<ShardingConfig.ShardingConfig["Service"]> | undefined;
41
80
  }) => ClientOnly extends true ? Layer.Layer<Sharding | Runners.Runners | ("byo" extends Storage ? never : MessageStorage.MessageStorage), ConfigError, "local" extends Storage ? never : "byo" extends Storage ? (MessageStorage.MessageStorage | RunnerStorage.RunnerStorage) : SqlClient> : Layer.Layer<Sharding | Runners.Runners | ("byo" extends Storage ? never : MessageStorage.MessageStorage), SocketServer.SocketServerError | ConfigError, "local" extends Storage ? never : "byo" extends Storage ? (MessageStorage.MessageStorage | RunnerStorage.RunnerStorage) : SqlClient>;
42
81
  /**
43
- * @since 1.0.0
44
- * @category Layers
82
+ * Provides an Undici dispatcher for Kubernetes API calls, using the service
83
+ * account CA certificate when it is available and falling back to the default
84
+ * dispatcher otherwise.
85
+ *
86
+ * @category layers
87
+ * @since 4.0.0
45
88
  */
46
89
  export declare const layerDispatcherK8s: Layer.Layer<NodeHttpClient.Dispatcher>;
47
90
  /**
48
- * @since 1.0.0
49
- * @category Layers
91
+ * Provides a `K8sHttpClient` backed by the Undici HTTP client and the
92
+ * Kubernetes-aware dispatcher.
93
+ *
94
+ * @category layers
95
+ * @since 4.0.0
50
96
  */
51
97
  export declare const layerK8sHttpClient: Layer.Layer<K8sHttpClient.K8sHttpClient>;
52
98
  //# sourceMappingURL=NodeClusterSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterSocket.d.ts","sourceRoot":"","sources":["../src/NodeClusterSocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAA;AACvG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAKxE,OAAO,KAAK,KAAK,YAAY,MAAM,qCAAqC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAGrD,OAAO;AACL;;;GAGG;AACH,mBAAmB;AACnB;;;GAGG;AACH,iBAAiB,EAClB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK,EACxC,KAAK,CAAC,OAAO,SAAS,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAErD,UAAU;IACR,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5C,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA;CACxF,KACA,UAAU,SAAS,IAAI,GAAG,KAAK,CAAC,KAAK,CACpC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,WAAW,EACX,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CACd,GACD,KAAK,CAAC,KAAK,CACT,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,YAAY,CAAC,iBAAiB,GAAG,WAAW,EAC5C,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CAyChB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAuBrE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAIvE,CAAA"}
1
+ {"version":3,"file":"NodeClusterSocket.d.ts","sourceRoot":"","sources":["../src/NodeClusterSocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAA;AACvG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAExE,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAA;AAC1D,OAAO,KAAK,aAAa,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AAKxE,OAAO,KAAK,KAAK,YAAY,MAAM,qCAAqC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAGrD,OAAO;AACL;;;;;;GAMG;AACH,mBAAmB;AACnB;;;;;;GAMG;AACH,iBAAiB,EAClB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAChB,KAAK,CAAC,UAAU,SAAS,OAAO,GAAG,KAAK,EACxC,KAAK,CAAC,OAAO,SAAS,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,EAErD,UAAU;IACR,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5C,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA;CACxF,KACA,UAAU,SAAS,IAAI,GAAG,KAAK,CAAC,KAAK,CACpC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,WAAW,EACX,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CACd,GACD,KAAK,CAAC,KAAK,CACT,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,EAC5F,YAAY,CAAC,iBAAiB,GAAG,WAAW,EAC5C,OAAO,SAAS,OAAO,GAAG,KAAK,GAC3B,KAAK,SAAS,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,GACrF,SAAS,CAyChB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAuBrE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAIvE,CAAA"}
@@ -1,5 +1,34 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `NodeClusterSocket` module provides the Node.js socket transport for
3
+ * Effect Cluster runners. It wires `SocketRunner` to Node TCP sockets, supplies
4
+ * RPC client and server protocol layers, and builds a complete sharding layer
5
+ * with serialization, runner health, runner storage, and message storage.
6
+ *
7
+ * **Common tasks**
8
+ *
9
+ * - Run a Node process as a cluster runner over raw TCP sockets with
10
+ * {@link layer}
11
+ * - Connect a client-only process to an existing socket cluster without
12
+ * starting a runner server
13
+ * - Use SQL-backed storage for durable multi-process clusters, `local` storage
14
+ * for short-lived development, or `byo` storage when the deployment owns the
15
+ * persistence boundary
16
+ * - Check runner health with socket pings or Kubernetes pod readiness through
17
+ * {@link layerK8sHttpClient}
18
+ *
19
+ * **Gotchas**
20
+ *
21
+ * - `runnerAddress` is the host and port advertised to other runners; set
22
+ * `runnerListenAddress` when the local bind address differs from the
23
+ * externally reachable address
24
+ * - The socket transport is point-to-point RPC, not cluster gossip: runner
25
+ * membership, shard ownership, and persisted delivery are coordinated through
26
+ * `RunnerStorage`, `MessageStorage`, and `RunnerHealth`
27
+ * - `clientOnly` does not start a socket server or receive shard assignments
28
+ * - Ping health checks use the same socket protocol, so unreachable ports,
29
+ * firewalls, or serialization mismatches can make a runner appear unhealthy
30
+ *
31
+ * @since 4.0.0
3
32
  */
4
33
  import { layerClientProtocol, layerSocketServer } from "@effect/platform-node-shared/NodeClusterSocket";
5
34
  import * as Effect from "effect/Effect";
@@ -20,18 +49,28 @@ import * as NodeHttpClient from "./NodeHttpClient.js";
20
49
  import * as Undici from "./Undici.js";
21
50
  export {
22
51
  /**
23
- * @since 1.0.0
24
- * @category Re-exports
52
+ * Provides the cluster `RpcClientProtocol` using the shared socket client
53
+ * implementation.
54
+ *
55
+ * @category re-exports
56
+ * @since 4.0.0
25
57
  */
26
58
  layerClientProtocol,
27
59
  /**
28
- * @since 1.0.0
29
- * @category Re-exports
60
+ * Provides the socket server used by Node cluster runners through the shared
61
+ * socket server implementation.
62
+ *
63
+ * @category re-exports
64
+ * @since 4.0.0
30
65
  */
31
66
  layerSocketServer };
32
67
  /**
33
- * @since 1.0.0
34
- * @category Layers
68
+ * Builds the Node cluster socket sharding layer, configuring RPC
69
+ * serialization, message storage, runner health checks, and optional
70
+ * client-only mode.
71
+ *
72
+ * @category layers
73
+ * @since 4.0.0
35
74
  */
36
75
  export const layer = options => {
37
76
  const layer = options?.clientOnly
@@ -43,8 +82,12 @@ export const layer = options => {
43
82
  return layer.pipe(Layer.provide(runnerHealth), Layer.provideMerge(options?.storage === "local" ? MessageStorage.layerNoop : options?.storage === "byo" ? Layer.empty : Layer.orDie(SqlMessageStorage.layer)), Layer.provide(options?.storage === "local" ? RunnerStorage.layerMemory : options?.storage === "byo" ? Layer.empty : Layer.orDie(SqlRunnerStorage.layer)), Layer.provide(ShardingConfig.layerFromEnv(options?.shardingConfig)), Layer.provide(options?.serialization === "ndjson" ? RpcSerialization.layerNdjson : RpcSerialization.layerMsgPack));
44
83
  };
45
84
  /**
46
- * @since 1.0.0
47
- * @category Layers
85
+ * Provides an Undici dispatcher for Kubernetes API calls, using the service
86
+ * account CA certificate when it is available and falling back to the default
87
+ * dispatcher otherwise.
88
+ *
89
+ * @category layers
90
+ * @since 4.0.0
48
91
  */
49
92
  export const layerDispatcherK8s = /*#__PURE__*/Layer.effect(NodeHttpClient.Dispatcher)(Effect.gen(function* () {
50
93
  const fs = yield* FileSystem.FileSystem;
@@ -59,8 +102,11 @@ export const layerDispatcherK8s = /*#__PURE__*/Layer.effect(NodeHttpClient.Dispa
59
102
  return yield* NodeHttpClient.makeDispatcher;
60
103
  })).pipe(/*#__PURE__*/Layer.provide(NodeFileSystem.layer));
61
104
  /**
62
- * @since 1.0.0
63
- * @category Layers
105
+ * Provides a `K8sHttpClient` backed by the Undici HTTP client and the
106
+ * Kubernetes-aware dispatcher.
107
+ *
108
+ * @category layers
109
+ * @since 4.0.0
64
110
  */
65
111
  export const layerK8sHttpClient = /*#__PURE__*/K8sHttpClient.layer.pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.fresh(NodeHttpClient.layerUndiciNoDispatcher)), /*#__PURE__*/Layer.provide(layerDispatcherK8s), /*#__PURE__*/Layer.provide(NodeFileSystem.layer));
66
112
  //# sourceMappingURL=NodeClusterSocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClusterSocket.js","names":["layerClientProtocol","layerSocketServer","Effect","FileSystem","Layer","K8sHttpClient","MessageStorage","RunnerHealth","Runners","RunnerStorage","ShardingConfig","SocketRunner","SqlMessageStorage","SqlRunnerStorage","RpcSerialization","NodeFileSystem","NodeHttpClient","Undici","layer","options","clientOnly","provide","layerClientOnly","runnerHealth","empty","layerK8s","runnerHealthK8s","pipe","layerK8sHttpClient","layerPing","layerRpc","provideMerge","storage","layerNoop","orDie","layerMemory","layerFromEnv","shardingConfig","serialization","layerNdjson","layerMsgPack","layerDispatcherK8s","effect","Dispatcher","gen","fs","caCertOption","readFileString","option","_tag","acquireRelease","sync","Agent","connect","ca","value","agent","promise","destroy","makeDispatcher","fresh","layerUndiciNoDispatcher"],"sources":["../src/NodeClusterSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NodeClusterSocket.js","names":["layerClientProtocol","layerSocketServer","Effect","FileSystem","Layer","K8sHttpClient","MessageStorage","RunnerHealth","Runners","RunnerStorage","ShardingConfig","SocketRunner","SqlMessageStorage","SqlRunnerStorage","RpcSerialization","NodeFileSystem","NodeHttpClient","Undici","layer","options","clientOnly","provide","layerClientOnly","runnerHealth","empty","layerK8s","runnerHealthK8s","pipe","layerK8sHttpClient","layerPing","layerRpc","provideMerge","storage","layerNoop","orDie","layerMemory","layerFromEnv","shardingConfig","serialization","layerNdjson","layerMsgPack","layerDispatcherK8s","effect","Dispatcher","gen","fs","caCertOption","readFileString","option","_tag","acquireRelease","sync","Agent","connect","ca","value","agent","promise","destroy","makeDispatcher","fresh","layerUndiciNoDispatcher"],"sources":["../src/NodeClusterSocket.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type * as Crypto from "effect/Crypto";
2
+ import type * as Layer from "effect/Layer";
3
+ /**
4
+ * A layer that provides the Node.js Crypto service implementation.
5
+ *
6
+ * @category layers
7
+ * @since 1.0.0
8
+ */
9
+ export declare const layer: Layer.Layer<Crypto.Crypto>;
10
+ //# sourceMappingURL=NodeCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCrypto.d.ts","sourceRoot":"","sources":["../src/NodeCrypto.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAoB,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Node.js platform Crypto service layer.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+ import * as NodeCrypto from "@effect/platform-node-shared/NodeCrypto";
7
+ /**
8
+ * A layer that provides the Node.js Crypto service implementation.
9
+ *
10
+ * @category layers
11
+ * @since 1.0.0
12
+ */
13
+ export const layer = NodeCrypto.layer;
14
+ //# sourceMappingURL=NodeCrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCrypto.js","names":["NodeCrypto","layer"],"sources":["../src/NodeCrypto.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;AAKA,OAAO,KAAKA,UAAU,MAAM,yCAAyC;AAIrE;;;;;;AAMA,OAAO,MAAMC,KAAK,GAA+BD,UAAU,CAACC,KAAK","ignoreList":[]}
@@ -1,8 +1,10 @@
1
1
  import type { FileSystem } from "effect/FileSystem";
2
2
  import type * as Layer from "effect/Layer";
3
3
  /**
4
- * @since 1.0.0
5
- * @category layer
4
+ * Provides the `FileSystem` service backed by Node filesystem APIs.
5
+ *
6
+ * @category layers
7
+ * @since 4.0.0
6
8
  */
7
9
  export declare const layer: Layer.Layer<FileSystem>;
8
10
  //# sourceMappingURL=NodeFileSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeFileSystem.d.ts","sourceRoot":"","sources":["../src/NodeFileSystem.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAwB,CAAA"}
1
+ {"version":3,"file":"NodeFileSystem.d.ts","sourceRoot":"","sources":["../src/NodeFileSystem.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAwB,CAAA"}
@@ -1,10 +1,29 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Provides the Node.js `FileSystem` layer for Effect programs.
3
+ *
4
+ * Use this module when a Node application, CLI, script, or test needs to
5
+ * satisfy the `FileSystem` service with real filesystem access for reading and
6
+ * writing files, creating directories and temporary files, inspecting metadata,
7
+ * managing links, or watching paths for changes.
8
+ *
9
+ * This module only exposes the Node-backed layer; filesystem operations are
10
+ * accessed through the `FileSystem` service from `effect/FileSystem`. Provide
11
+ * `NodeFileSystem.layer` at the edge of the program, or use
12
+ * `NodeServices.layer` when you also want the standard Node path, stdio,
13
+ * terminal, and child process services. The implementation is shared with
14
+ * other Node-compatible platform packages, so optional services such as
15
+ * `FileSystem.WatchBackend` are honored when present; otherwise file watching
16
+ * follows Node's `node:fs.watch` behavior. Paths are interpreted by Node, so
17
+ * relative paths use the current working directory and platform path rules.
18
+ *
19
+ * @since 4.0.0
3
20
  */
4
21
  import * as NodeFileSystem from "@effect/platform-node-shared/NodeFileSystem";
5
22
  /**
6
- * @since 1.0.0
7
- * @category layer
23
+ * Provides the `FileSystem` service backed by Node filesystem APIs.
24
+ *
25
+ * @category layers
26
+ * @since 4.0.0
8
27
  */
9
28
  export const layer = NodeFileSystem.layer;
10
29
  //# sourceMappingURL=NodeFileSystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeFileSystem.js","names":["NodeFileSystem","layer"],"sources":["../src/NodeFileSystem.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,cAAc,MAAM,6CAA6C;AAI7E;;;;AAIA,OAAO,MAAMC,KAAK,GAA4BD,cAAc,CAACC,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"NodeFileSystem.js","names":["NodeFileSystem","layer"],"sources":["../src/NodeFileSystem.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,KAAKA,cAAc,MAAM,6CAA6C;AAI7E;;;;;;AAMA,OAAO,MAAMC,KAAK,GAA4BD,cAAc,CAACC,KAAK","ignoreList":[]}