effect 4.0.2 → 4.0.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.
- package/dist/Context.js +3 -3
- package/dist/Context.js.map +1 -1
- package/dist/Crypto.d.ts +33 -5
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +8 -2
- package/dist/Crypto.js.map +1 -1
- package/dist/DateTime.d.ts +9 -6
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +9 -6
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +6 -6
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +27 -8
- package/dist/Duration.js.map +1 -1
- package/dist/FileSystem.d.ts +44 -2
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js.map +1 -1
- package/dist/Schema.d.ts +473 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +355 -4
- package/dist/Schema.js.map +1 -1
- package/dist/Stdio.d.ts +7 -1
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +1 -0
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +11 -11
- package/dist/Stream.js +5 -5
- package/dist/ai/McpServer.d.ts +6 -0
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +65 -23
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +5 -0
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +1 -0
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +27 -0
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +33 -10
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +6 -3
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +3 -3
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +8 -5
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts +5 -4
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +3 -3
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Prompt.d.ts +17 -1
- package/dist/cli/Prompt.d.ts.map +1 -1
- package/dist/cli/Prompt.js +119 -114
- package/dist/cli/Prompt.js.map +1 -1
- package/dist/cli/internal/ansi.d.ts +0 -1
- package/dist/cli/internal/ansi.d.ts.map +1 -1
- package/dist/cli/internal/ansi.js +20 -3
- package/dist/cli/internal/ansi.js.map +1 -1
- package/dist/cli/internal/completions/powershell.d.ts +2 -0
- package/dist/cli/internal/completions/powershell.d.ts.map +1 -0
- package/dist/cli/internal/completions/powershell.js +273 -0
- package/dist/cli/internal/completions/powershell.js.map +1 -0
- package/dist/cli/internal/completions/zsh.js +3 -2
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/wizard.d.ts +3 -3
- package/dist/cli/internal/wizard.d.ts.map +1 -1
- package/dist/cli/internal/wizard.js +21 -18
- package/dist/cli/internal/wizard.js.map +1 -1
- package/dist/cluster/ClusterSchema.d.ts +28 -0
- package/dist/cluster/ClusterSchema.d.ts.map +1 -1
- package/dist/cluster/ClusterSchema.js +30 -0
- package/dist/cluster/ClusterSchema.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +10 -18
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +18 -3
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +31 -11
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +8 -2
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +181 -62
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts +59 -19
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +84 -55
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +68 -19
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +191 -113
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +104 -37
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +3 -6
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/HttpClient.d.ts +6 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +39 -2
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/http/HttpTraceContext.js +4 -2
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/internal/effect.js +12 -7
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/AddressResolver.d.ts +145 -0
- package/dist/net/AddressResolver.d.ts.map +1 -0
- package/dist/net/AddressResolver.js +114 -0
- package/dist/net/AddressResolver.js.map +1 -0
- package/dist/net/Dns.d.ts +596 -0
- package/dist/net/Dns.d.ts.map +1 -0
- package/dist/net/Dns.js +549 -0
- package/dist/net/Dns.js.map +1 -0
- package/dist/net/Host.d.ts +320 -0
- package/dist/net/Host.d.ts.map +1 -0
- package/dist/net/Host.js +342 -0
- package/dist/net/Host.js.map +1 -0
- package/dist/net/IpInterface.d.ts +76 -3
- package/dist/net/IpInterface.d.ts.map +1 -1
- package/dist/net/IpInterface.js +53 -4
- package/dist/net/IpInterface.js.map +1 -1
- package/dist/net/IpNetwork.d.ts +82 -8
- package/dist/net/IpNetwork.d.ts.map +1 -1
- package/dist/net/IpNetwork.js +60 -4
- package/dist/net/IpNetwork.js.map +1 -1
- package/dist/net/NetAddress.d.ts +388 -35
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +350 -34
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/net/index.d.ts +15 -0
- package/dist/net/index.d.ts.map +1 -1
- package/dist/net/index.js +15 -0
- package/dist/net/index.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +15 -21
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/PrometheusMetrics.js +1 -0
- package/dist/observability/PrometheusMetrics.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +32 -3
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +75 -16
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +22 -6
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +12 -5
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts +6 -0
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +42 -20
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/socket/DatagramSocket.d.ts +456 -0
- package/dist/socket/DatagramSocket.d.ts.map +1 -0
- package/dist/socket/DatagramSocket.js +535 -0
- package/dist/socket/DatagramSocket.js.map +1 -0
- package/dist/socket/Socket.d.ts +14 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +9 -1
- package/dist/socket/Socket.js.map +1 -1
- package/dist/socket/index.d.ts +5 -0
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +5 -0
- package/dist/socket/index.js.map +1 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +7 -2
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +7 -1
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +31 -6
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/testing/TestCrypto.d.ts +73 -0
- package/dist/testing/TestCrypto.d.ts.map +1 -0
- package/dist/testing/TestCrypto.js +87 -0
- package/dist/testing/TestCrypto.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts +54 -0
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +78 -49
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +2 -1
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +1 -1
- package/src/Context.ts +3 -3
- package/src/Crypto.ts +43 -9
- package/src/DateTime.ts +9 -6
- package/src/Duration.ts +36 -16
- package/src/FileSystem.ts +48 -2
- package/src/Schema.ts +669 -5
- package/src/Stdio.ts +9 -2
- package/src/Stream.ts +11 -11
- package/src/ai/McpServer.ts +63 -23
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +5 -0
- package/src/ai/internal/mcpProtocol.ts +3 -0
- package/src/ai/internal/mcpRuntime.ts +2 -0
- package/src/cli/CliOutput.ts +33 -16
- package/src/cli/Command.ts +4 -3
- package/src/cli/Completions.ts +9 -6
- package/src/cli/GlobalFlag.ts +19 -11
- package/src/cli/Prompt.ts +159 -149
- package/src/cli/internal/ansi.ts +26 -3
- package/src/cli/internal/completions/powershell.ts +322 -0
- package/src/cli/internal/completions/zsh.ts +4 -2
- package/src/cli/internal/wizard.ts +34 -26
- package/src/cluster/ClusterSchema.ts +32 -0
- package/src/cluster/ClusterWorkflowEngine.ts +13 -24
- package/src/cluster/MessageStorage.ts +45 -14
- package/src/cluster/Runners.ts +8 -2
- package/src/cluster/Sharding.ts +207 -49
- package/src/cluster/SqlMessageStorage.ts +118 -84
- package/src/cluster/SqlRunnerStorage.ts +224 -128
- package/src/cluster/internal/entityManager.ts +151 -55
- package/src/http/FindMyWay/internal/router.ts +4 -7
- package/src/http/HttpClient.ts +56 -2
- package/src/http/HttpTraceContext.ts +8 -2
- package/src/internal/effect.ts +15 -13
- package/src/internal/version.ts +1 -1
- package/src/net/AddressResolver.ts +222 -0
- package/src/net/Dns.ts +1035 -0
- package/src/net/Host.ts +472 -0
- package/src/net/IpInterface.ts +117 -7
- package/src/net/IpNetwork.ts +116 -17
- package/src/net/NetAddress.ts +611 -76
- package/src/net/index.ts +18 -0
- package/src/observability/OtlpMetrics.ts +12 -23
- package/src/observability/PrometheusMetrics.ts +1 -0
- package/src/persistence/PersistedQueue.ts +146 -53
- package/src/rpc/RpcClient.ts +41 -19
- package/src/rpc/RpcServer.ts +60 -25
- package/src/socket/DatagramSocket.ts +919 -0
- package/src/socket/Socket.ts +22 -2
- package/src/socket/index.ts +6 -0
- package/src/sql/Migrator.ts +21 -5
- package/src/sql/SqlClient.ts +39 -15
- package/src/testing/TestCrypto.ts +94 -0
- package/src/testing/index.ts +6 -0
- package/src/workflow/DurableDeferred.ts +123 -48
- package/src/workflow/WorkflowEngine.ts +2 -1
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull-based UDP sockets with scoped native handles.
|
|
3
|
+
*
|
|
4
|
+
* Acquiring a reader opens and binds a socket owned by its scope. Only one
|
|
5
|
+
* reader is open at a time; another acquisition waits interruptibly for it to
|
|
6
|
+
* close. Use `Effect.retry` around a scoped consume loop to open a new socket
|
|
7
|
+
* on each retry.
|
|
8
|
+
*
|
|
9
|
+
* Writes wait while no reader is open, so a send-only client must still
|
|
10
|
+
* acquire a reader.
|
|
11
|
+
*
|
|
12
|
+
* **Example** (Portable request/reply client)
|
|
13
|
+
*
|
|
14
|
+
* ```ts import.meta.vitest
|
|
15
|
+
* import { Effect } from "effect"
|
|
16
|
+
* import { NetAddress } from "effect/net"
|
|
17
|
+
* import { DatagramSocket } from "effect/socket"
|
|
18
|
+
*
|
|
19
|
+
* const server = NetAddress.inetAddressFromIpStringUnsafe("127.0.0.1", 5353)
|
|
20
|
+
*
|
|
21
|
+
* export const request = (payload: string) =>
|
|
22
|
+
* Effect.gen(function*() {
|
|
23
|
+
* const socket = yield* DatagramSocket.DatagramSocket
|
|
24
|
+
* const reader = yield* socket.reader
|
|
25
|
+
* const writer = yield* socket.writer
|
|
26
|
+
* yield* writer.write({ payload, address: server })
|
|
27
|
+
* const [response] = yield* reader.pull
|
|
28
|
+
* return response.payload
|
|
29
|
+
* }).pipe(Effect.scoped)
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @stability experimental
|
|
33
|
+
* @since 4.0.0
|
|
34
|
+
*/
|
|
35
|
+
import type { NonEmptyReadonlyArray } from "../Array.ts";
|
|
36
|
+
import * as Context from "../Context.ts";
|
|
37
|
+
import * as Effect from "../Effect.ts";
|
|
38
|
+
import * as NetAddress from "../net/NetAddress.ts";
|
|
39
|
+
import * as Schema from "../Schema.ts";
|
|
40
|
+
import * as Scope from "../Scope.ts";
|
|
41
|
+
/**
|
|
42
|
+
* Runtime type identifier attached to `DatagramSocket` services.
|
|
43
|
+
*
|
|
44
|
+
* @stability experimental
|
|
45
|
+
* @category type IDs
|
|
46
|
+
* @since 4.0.0
|
|
47
|
+
*/
|
|
48
|
+
export declare const TypeId = "~effect/socket/DatagramSocket";
|
|
49
|
+
/**
|
|
50
|
+
* Service tag for UDP socket transports.
|
|
51
|
+
*
|
|
52
|
+
* @stability experimental
|
|
53
|
+
* @category services
|
|
54
|
+
* @since 4.0.0
|
|
55
|
+
*/
|
|
56
|
+
export declare const DatagramSocket: Context.Service<DatagramSocket, DatagramSocket>;
|
|
57
|
+
/**
|
|
58
|
+
* A UDP socket with a scoped, exclusive reader. Acquiring `reader` opens and
|
|
59
|
+
* binds a native socket; subsequent acquisitions wait for its scope to close.
|
|
60
|
+
* Acquiring `writer` cannot fail, but writes wait for an open reader.
|
|
61
|
+
*
|
|
62
|
+
* @stability experimental
|
|
63
|
+
* @category models
|
|
64
|
+
* @since 4.0.0
|
|
65
|
+
*/
|
|
66
|
+
export interface DatagramSocket {
|
|
67
|
+
readonly [TypeId]: typeof TypeId;
|
|
68
|
+
readonly reader: Effect.Effect<Reader, DatagramSocketError, Scope.Scope>;
|
|
69
|
+
readonly writer: Effect.Effect<Writer, never, Scope.Scope>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A received packet.
|
|
73
|
+
*
|
|
74
|
+
* **Details**
|
|
75
|
+
*
|
|
76
|
+
* The payload is safe to retain. The sender's `address` is parsed on first
|
|
77
|
+
* read and cached.
|
|
78
|
+
*
|
|
79
|
+
* Reply with `writer.write({ payload, address: received })` to reuse the raw
|
|
80
|
+
* sender address without parsing. This requires a datagram from a platform
|
|
81
|
+
* adapter or `makeFromBackingSocket`. For hand-built datagrams or custom
|
|
82
|
+
* readers, use `{ payload, address: received.address }`.
|
|
83
|
+
*
|
|
84
|
+
* @stability experimental
|
|
85
|
+
* @category models
|
|
86
|
+
* @since 4.0.0
|
|
87
|
+
*/
|
|
88
|
+
export interface Datagram {
|
|
89
|
+
readonly payload: Uint8Array;
|
|
90
|
+
readonly address: NetAddress.InetAddress;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A packet to send.
|
|
94
|
+
*
|
|
95
|
+
* **Details**
|
|
96
|
+
*
|
|
97
|
+
* String payloads are encoded as UTF-8. `address` can be omitted when the
|
|
98
|
+
* socket has a `peer` or is connected. On a connected socket an explicit
|
|
99
|
+
* `InetAddress` fails the write, while a received `Datagram` is allowed and
|
|
100
|
+
* goes out on the connected path.
|
|
101
|
+
*
|
|
102
|
+
* Pass a received `Datagram` as the destination to reply, or as the whole
|
|
103
|
+
* argument to echo it. Both reuse the raw sender address and require a
|
|
104
|
+
* datagram from a platform adapter or `makeFromBackingSocket`. Hand-built
|
|
105
|
+
* datagrams and custom readers must pass an explicit `InetAddress` instead.
|
|
106
|
+
*
|
|
107
|
+
* @stability experimental
|
|
108
|
+
* @category models
|
|
109
|
+
* @since 4.0.0
|
|
110
|
+
*/
|
|
111
|
+
export interface OutgoingDatagram {
|
|
112
|
+
readonly payload: Uint8Array | string;
|
|
113
|
+
readonly address?: NetAddress.InetAddress | Datagram | undefined;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The receive side of an open native socket.
|
|
117
|
+
*
|
|
118
|
+
* **Details**
|
|
119
|
+
*
|
|
120
|
+
* `pull` returns everything queued since the last pull, or waits for the next
|
|
121
|
+
* packet. After a terminal error, `pull` first returns the queued packets and
|
|
122
|
+
* then fails with the same error until the reader's scope closes. Closing the
|
|
123
|
+
* scope discards the queue and fails every waiting `pull` with
|
|
124
|
+
* `DatagramSocketClosedError`.
|
|
125
|
+
*
|
|
126
|
+
* Concurrent pulls wait in FIFO order. Each incoming packet goes to the
|
|
127
|
+
* oldest waiter; a terminal error fails all waiters.
|
|
128
|
+
*
|
|
129
|
+
* `address` is the bound local address, parsed on first read and cached.
|
|
130
|
+
*
|
|
131
|
+
* `dropped` counts receive-buffer overflow since this reader opened, not
|
|
132
|
+
* kernel or network loss or packets discarded on scope close.
|
|
133
|
+
*
|
|
134
|
+
* `joinMulticast` joins a group until its scope closes; leave failures are
|
|
135
|
+
* ignored. Its `interface` selects where packets arrive (ingress), not the
|
|
136
|
+
* platform's `multicast.interface` for sending (egress).
|
|
137
|
+
*
|
|
138
|
+
* @stability experimental
|
|
139
|
+
* @category models
|
|
140
|
+
* @since 4.0.0
|
|
141
|
+
*/
|
|
142
|
+
export interface Reader {
|
|
143
|
+
readonly pull: Effect.Effect<NonEmptyReadonlyArray<Datagram>, DatagramSocketError>;
|
|
144
|
+
readonly address: NetAddress.InetAddress;
|
|
145
|
+
readonly dropped: () => number;
|
|
146
|
+
readonly joinMulticast: <A extends NetAddress.IpAddress>(options: {
|
|
147
|
+
readonly group: NetAddress.MulticastAddress<A>;
|
|
148
|
+
readonly interface?: NetAddress.MulticastInterface<A> | undefined;
|
|
149
|
+
readonly source?: A | undefined;
|
|
150
|
+
}) => Effect.Effect<void, DatagramSocketError, Scope.Scope>;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The send side of a `DatagramSocket`. Writes wait until a reader is open, so
|
|
154
|
+
* a send-only client must still acquire a reader.
|
|
155
|
+
*
|
|
156
|
+
* **Details**
|
|
157
|
+
*
|
|
158
|
+
* A write completes when the runtime reports the send's result, and send
|
|
159
|
+
* errors fail it with a `DatagramSocketWriteError` carrying the destination
|
|
160
|
+
* `address`. After a terminal reader error, writes fail with that error until
|
|
161
|
+
* the reader's scope closes, and then wait for the next reader.
|
|
162
|
+
*
|
|
163
|
+
* `writeAll` fails with the first error, without resending. Partial delivery is
|
|
164
|
+
* unspecified. The error has no packet index, and its `address` is absent on Bun.
|
|
165
|
+
*
|
|
166
|
+
* There is no built-in write timeout; use `Effect.timeout`.
|
|
167
|
+
*
|
|
168
|
+
* @stability experimental
|
|
169
|
+
* @category models
|
|
170
|
+
* @since 4.0.0
|
|
171
|
+
*/
|
|
172
|
+
export interface Writer {
|
|
173
|
+
readonly write: (datagram: OutgoingDatagram) => Effect.Effect<void, DatagramSocketError>;
|
|
174
|
+
readonly writeAll: (datagrams: NonEmptyReadonlyArray<OutgoingDatagram>) => Effect.Effect<void, DatagramSocketError>;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Receive queue options.
|
|
178
|
+
*
|
|
179
|
+
* **Details**
|
|
180
|
+
*
|
|
181
|
+
* The queue is bounded in packets, with no byte cap. `capacity` defaults to
|
|
182
|
+
* 1024 and must be a positive safe integer. The worst-case
|
|
183
|
+
* memory is capacity × 64 KiB, about 64 MiB at the default.
|
|
184
|
+
*
|
|
185
|
+
* When the queue is full, `"dropping"` (the default) discards the incoming
|
|
186
|
+
* packet and `"sliding"` discards the oldest queued one. Both count the
|
|
187
|
+
* packet in `Reader.dropped`.
|
|
188
|
+
*
|
|
189
|
+
* @stability experimental
|
|
190
|
+
* @category models
|
|
191
|
+
* @since 4.0.0
|
|
192
|
+
*/
|
|
193
|
+
export interface ReceiveBufferOptions {
|
|
194
|
+
readonly capacity?: number | undefined;
|
|
195
|
+
readonly strategy?: "dropping" | "sliding" | undefined;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Creates a `DatagramSocket` from its `reader` and `writer` effects.
|
|
199
|
+
*
|
|
200
|
+
* @stability experimental
|
|
201
|
+
* @category constructors
|
|
202
|
+
* @since 4.0.0
|
|
203
|
+
*/
|
|
204
|
+
export declare const make: (options: {
|
|
205
|
+
readonly reader: DatagramSocket["reader"];
|
|
206
|
+
readonly writer: DatagramSocket["writer"];
|
|
207
|
+
}) => DatagramSocket;
|
|
208
|
+
/**
|
|
209
|
+
* A native host and port, parsed on demand.
|
|
210
|
+
*
|
|
211
|
+
* @stability experimental
|
|
212
|
+
* @category models
|
|
213
|
+
* @since 4.0.0
|
|
214
|
+
*/
|
|
215
|
+
export interface BackingAddress {
|
|
216
|
+
readonly host: string;
|
|
217
|
+
readonly port: number;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Native transport contract used by platform adapters.
|
|
221
|
+
*
|
|
222
|
+
* **Details**
|
|
223
|
+
*
|
|
224
|
+
* `address` is the raw bound address, read once at open. `scopeIds` maps IPv6
|
|
225
|
+
* zone names to scope IDs, for parsing named zones and formatting
|
|
226
|
+
* destinations. `peer` is the default destination, and `connected` marks a
|
|
227
|
+
* natively connected socket, whose sends receive no destination.
|
|
228
|
+
*
|
|
229
|
+
* `send` and `sendMany` hand datagrams to the runtime and call `done` exactly
|
|
230
|
+
* once, synchronously or later, when the runtime reports the result. They must
|
|
231
|
+
* not throw. `sendMany` passes the index of the failing datagram to `done`
|
|
232
|
+
* when the runtime knows it, so core can attach its address.
|
|
233
|
+
*
|
|
234
|
+
* Adapters normalize native errors before passing them to core.
|
|
235
|
+
* Read destination `host` and `port` during the call; do not retain the record.
|
|
236
|
+
*
|
|
237
|
+
* `close` must not throw.
|
|
238
|
+
*
|
|
239
|
+
* @stability experimental
|
|
240
|
+
* @category models
|
|
241
|
+
* @since 4.0.0
|
|
242
|
+
*/
|
|
243
|
+
export interface BackingSocket {
|
|
244
|
+
readonly address: BackingAddress;
|
|
245
|
+
readonly scopeIds?: ReadonlyMap<string, number> | undefined;
|
|
246
|
+
readonly peer?: BackingAddress | undefined;
|
|
247
|
+
readonly connected?: boolean | undefined;
|
|
248
|
+
readonly send: (payload: Uint8Array, destination: BackingAddress | undefined, done: (error?: DatagramSocketError) => void) => void;
|
|
249
|
+
readonly sendMany: (payloads: ReadonlyArray<Uint8Array>, destinations: ReadonlyArray<BackingAddress | undefined>, done: (error?: DatagramSocketError, index?: number) => void) => void;
|
|
250
|
+
readonly joinMulticast: <A extends NetAddress.IpAddress>(options: {
|
|
251
|
+
readonly group: NetAddress.MulticastAddress<A>;
|
|
252
|
+
readonly interface?: NetAddress.MulticastInterface<A> | undefined;
|
|
253
|
+
readonly source?: A | undefined;
|
|
254
|
+
}) => Effect.Effect<() => Effect.Effect<void, never>, DatagramSocketError>;
|
|
255
|
+
readonly close: () => void;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Callbacks installed before opening the backing socket; packets may arrive
|
|
259
|
+
* synchronously.
|
|
260
|
+
*
|
|
261
|
+
* **Details**
|
|
262
|
+
*
|
|
263
|
+
* `onPacket` queues a received packet. `onReadError` is a terminal receive
|
|
264
|
+
* error and `onClose` reports the native socket closing underneath the
|
|
265
|
+
* reader; both are sticky. `onError` forwards errors with no write left to
|
|
266
|
+
* fail, such as ICMP reports, to the user's `onError` option.
|
|
267
|
+
*
|
|
268
|
+
* Each callback can be passed on its own, for example as a runtime's event
|
|
269
|
+
* listener.
|
|
270
|
+
*
|
|
271
|
+
* @stability experimental
|
|
272
|
+
* @category models
|
|
273
|
+
* @since 4.0.0
|
|
274
|
+
*/
|
|
275
|
+
export interface BackingEvents {
|
|
276
|
+
readonly onPacket: (payload: Uint8Array, host: string, port: number) => void;
|
|
277
|
+
readonly onReadError: (error: DatagramSocketError) => void;
|
|
278
|
+
readonly onError: (error: DatagramSocketError) => void;
|
|
279
|
+
readonly onClose: () => void;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* The normalized kind of a send or receive failure.
|
|
283
|
+
*
|
|
284
|
+
* @stability experimental
|
|
285
|
+
* @category errors
|
|
286
|
+
* @since 4.0.0
|
|
287
|
+
*/
|
|
288
|
+
export type IoErrorKind = "MessageTooLarge" | "Unreachable" | "ConnectionRefused" | "PermissionDenied" | "Unknown";
|
|
289
|
+
declare const DatagramSocketOpenError_base: Schema.Class<DatagramSocketOpenError, Schema.Struct<{
|
|
290
|
+
readonly _tag: Schema.tag<"DatagramSocketOpenError">;
|
|
291
|
+
readonly kind: Schema.Literals<readonly ["AddressInUse", "AddressNotAvailable", "PermissionDenied", "Unknown"]>;
|
|
292
|
+
readonly cause: Schema.Defect;
|
|
293
|
+
}>, import("../Cause.ts").YieldableError>;
|
|
294
|
+
/**
|
|
295
|
+
* Opening or binding the native socket, applying its options, or resolving
|
|
296
|
+
* a name failed.
|
|
297
|
+
*
|
|
298
|
+
* @stability experimental
|
|
299
|
+
* @category errors
|
|
300
|
+
* @since 4.0.0
|
|
301
|
+
*/
|
|
302
|
+
export declare class DatagramSocketOpenError extends DatagramSocketOpenError_base {
|
|
303
|
+
}
|
|
304
|
+
declare const DatagramSocketReadError_base: Schema.Class<DatagramSocketReadError, Schema.Struct<{
|
|
305
|
+
readonly _tag: Schema.tag<"DatagramSocketReadError">;
|
|
306
|
+
readonly kind: Schema.Literals<readonly ["MessageTooLarge", "Unreachable", "ConnectionRefused", "PermissionDenied", "Unknown"]>;
|
|
307
|
+
readonly cause: Schema.Defect;
|
|
308
|
+
}>, import("../Cause.ts").YieldableError>;
|
|
309
|
+
/**
|
|
310
|
+
* A receive failed, or an ICMP report arrived with no write left to fail.
|
|
311
|
+
*
|
|
312
|
+
* @stability experimental
|
|
313
|
+
* @category errors
|
|
314
|
+
* @since 4.0.0
|
|
315
|
+
*/
|
|
316
|
+
export declare class DatagramSocketReadError extends DatagramSocketReadError_base {
|
|
317
|
+
}
|
|
318
|
+
declare const DatagramSocketWriteError_base: Schema.Class<DatagramSocketWriteError, Schema.Struct<{
|
|
319
|
+
readonly _tag: Schema.tag<"DatagramSocketWriteError">;
|
|
320
|
+
readonly kind: Schema.Literals<readonly ["MessageTooLarge", "Unreachable", "ConnectionRefused", "PermissionDenied", "Unknown"]>;
|
|
321
|
+
readonly address: Schema.optional<Schema.InetAddress>;
|
|
322
|
+
readonly cause: Schema.Defect;
|
|
323
|
+
}>, import("../Cause.ts").YieldableError>;
|
|
324
|
+
/**
|
|
325
|
+
* A send failed. `address` is the destination when it is known.
|
|
326
|
+
*
|
|
327
|
+
* @stability experimental
|
|
328
|
+
* @category errors
|
|
329
|
+
* @since 4.0.0
|
|
330
|
+
*/
|
|
331
|
+
export declare class DatagramSocketWriteError extends DatagramSocketWriteError_base {
|
|
332
|
+
}
|
|
333
|
+
declare const DatagramSocketClosedError_base: Schema.Class<DatagramSocketClosedError, Schema.Struct<{
|
|
334
|
+
readonly _tag: Schema.tag<"DatagramSocketClosedError">;
|
|
335
|
+
}>, import("../Cause.ts").YieldableError>;
|
|
336
|
+
/**
|
|
337
|
+
* The native socket closed underneath the reader, or the reader's scope
|
|
338
|
+
* closed.
|
|
339
|
+
*
|
|
340
|
+
* @stability experimental
|
|
341
|
+
* @category errors
|
|
342
|
+
* @since 4.0.0
|
|
343
|
+
*/
|
|
344
|
+
export declare class DatagramSocketClosedError extends DatagramSocketClosedError_base {
|
|
345
|
+
}
|
|
346
|
+
declare const DatagramSocketUnsupportedError_base: Schema.Class<DatagramSocketUnsupportedError, Schema.Struct<{
|
|
347
|
+
readonly _tag: Schema.tag<"DatagramSocketUnsupportedError">;
|
|
348
|
+
readonly capability: Schema.String;
|
|
349
|
+
readonly runtime: Schema.String;
|
|
350
|
+
}>, import("../Cause.ts").YieldableError>;
|
|
351
|
+
/**
|
|
352
|
+
* The runtime lacks a capability, such as source-specific multicast on Deno.
|
|
353
|
+
*
|
|
354
|
+
* @stability experimental
|
|
355
|
+
* @category errors
|
|
356
|
+
* @since 4.0.0
|
|
357
|
+
*/
|
|
358
|
+
export declare class DatagramSocketUnsupportedError extends DatagramSocketUnsupportedError_base {
|
|
359
|
+
/**
|
|
360
|
+
* Names the runtime and the capability it lacks.
|
|
361
|
+
*
|
|
362
|
+
* @stability experimental
|
|
363
|
+
* @since 4.0.0
|
|
364
|
+
*/
|
|
365
|
+
get message(): string;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Schema for the union of `DatagramSocketError` reasons.
|
|
369
|
+
*
|
|
370
|
+
* @stability experimental
|
|
371
|
+
* @category errors
|
|
372
|
+
* @since 4.0.0
|
|
373
|
+
*/
|
|
374
|
+
export declare const DatagramSocketErrorReason: Schema.Union<readonly [typeof DatagramSocketOpenError, typeof DatagramSocketReadError, typeof DatagramSocketWriteError, typeof DatagramSocketClosedError, typeof DatagramSocketUnsupportedError]>;
|
|
375
|
+
/**
|
|
376
|
+
* The union of `DatagramSocketError` reasons.
|
|
377
|
+
*
|
|
378
|
+
* @stability experimental
|
|
379
|
+
* @category errors
|
|
380
|
+
* @since 4.0.0
|
|
381
|
+
*/
|
|
382
|
+
export type DatagramSocketErrorReason = typeof DatagramSocketErrorReason.Type;
|
|
383
|
+
/**
|
|
384
|
+
* Runtime type identifier attached to `DatagramSocketError` values.
|
|
385
|
+
*
|
|
386
|
+
* @stability experimental
|
|
387
|
+
* @category errors
|
|
388
|
+
* @since 4.0.0
|
|
389
|
+
*/
|
|
390
|
+
export declare const DatagramSocketErrorTypeId = "~effect/socket/DatagramSocket/DatagramSocketError";
|
|
391
|
+
/**
|
|
392
|
+
* Returns `true` when a value is a `DatagramSocketError`.
|
|
393
|
+
*
|
|
394
|
+
* @stability experimental
|
|
395
|
+
* @category guards
|
|
396
|
+
* @since 4.0.0
|
|
397
|
+
*/
|
|
398
|
+
export declare const isDatagramSocketError: (u: unknown) => u is DatagramSocketError;
|
|
399
|
+
declare const DatagramSocketError_base: Schema.Class<DatagramSocketError, Schema.TaggedStruct<"DatagramSocketError", {
|
|
400
|
+
readonly _tag: Schema.tag<"DatagramSocketError">;
|
|
401
|
+
readonly reason: Schema.Union<readonly [typeof DatagramSocketOpenError, typeof DatagramSocketReadError, typeof DatagramSocketWriteError, typeof DatagramSocketClosedError, typeof DatagramSocketUnsupportedError]>;
|
|
402
|
+
}>, import("../Cause.ts").YieldableError>;
|
|
403
|
+
/**
|
|
404
|
+
* The error raised by `DatagramSocket` operations, wrapping a specific
|
|
405
|
+
* reason. Its `cause` and `message` come from the reason.
|
|
406
|
+
*
|
|
407
|
+
* @stability experimental
|
|
408
|
+
* @category errors
|
|
409
|
+
* @since 4.0.0
|
|
410
|
+
*/
|
|
411
|
+
export declare class DatagramSocketError extends DatagramSocketError_base {
|
|
412
|
+
constructor(props: {
|
|
413
|
+
readonly reason: DatagramSocketErrorReason;
|
|
414
|
+
});
|
|
415
|
+
readonly [DatagramSocketErrorTypeId] = "~effect/socket/DatagramSocket/DatagramSocketError";
|
|
416
|
+
get message(): string;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Builds a `DatagramSocket` over a backing socket, opening a new socket for
|
|
420
|
+
* each reader acquisition.
|
|
421
|
+
*
|
|
422
|
+
* **Details**
|
|
423
|
+
*
|
|
424
|
+
* `open` receives the event callbacks before the handle exists, so packets can
|
|
425
|
+
* be queued while it opens. Core owns the receive queue and its overflow
|
|
426
|
+
* strategy, reader exclusivity, sticky errors, lazy address parsing, the
|
|
427
|
+
* writer latch and destination formatting. The handle is closed when the
|
|
428
|
+
* reader's scope closes. If acquisition is interrupted while `open` is still
|
|
429
|
+
* running, the interruption returns at once, `open` is left to finish, and
|
|
430
|
+
* the handle it produces is closed. The next reader waits until that open has
|
|
431
|
+
* settled, so two native sockets never exist at once. An adopted `acquire`
|
|
432
|
+
* must therefore finish in bounded time.
|
|
433
|
+
*
|
|
434
|
+
* `open` runs in the reader's scope, with the services of the fiber that
|
|
435
|
+
* built the socket, so an adopted `acquire` can use them and register
|
|
436
|
+
* finalizers that run when the reader closes. Where the fiber acquiring the
|
|
437
|
+
* reader has a service with the same tag, its own takes precedence.
|
|
438
|
+
*
|
|
439
|
+
* Concurrent pulls are served in the order they started waiting.
|
|
440
|
+
*
|
|
441
|
+
* `onError` receives errors with no write left to fail. It runs
|
|
442
|
+
* synchronously, and anything it throws is ignored.
|
|
443
|
+
*
|
|
444
|
+
* Invalid `receiveBuffer.capacity` values cause a defect; use a positive
|
|
445
|
+
* safe integer.
|
|
446
|
+
*
|
|
447
|
+
* @stability experimental
|
|
448
|
+
* @category constructors
|
|
449
|
+
* @since 4.0.0
|
|
450
|
+
*/
|
|
451
|
+
export declare const makeFromBackingSocket: <R = never>(open: (events: BackingEvents) => Effect.Effect<BackingSocket, DatagramSocketError, R>, options?: {
|
|
452
|
+
readonly receiveBuffer?: ReceiveBufferOptions | undefined;
|
|
453
|
+
readonly onError?: ((error: DatagramSocketError) => void) | undefined;
|
|
454
|
+
} | undefined) => Effect.Effect<DatagramSocket, never, Exclude<R, Scope.Scope>>;
|
|
455
|
+
export {};
|
|
456
|
+
//# sourceMappingURL=DatagramSocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatagramSocket.d.ts","sourceRoot":"","sources":["../../src/socket/DatagramSocket.ts"],"names":[],"mappings":"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"}
|