the-moby-effect 1.48.0 → 1.48.1
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/cjs/Callbacks.js.map +1 -1
- package/dist/cjs/DindEngine.js.map +1 -1
- package/dist/cjs/DockerEngine.js +1 -1
- package/dist/cjs/DockerEngine.js.map +1 -1
- package/dist/cjs/MobyConnection.js.map +1 -1
- package/dist/cjs/MobyDemux.js +301 -66
- package/dist/cjs/MobyDemux.js.map +1 -1
- package/dist/cjs/MobyPlatforms.js +3 -3
- package/dist/cjs/MobyPlatforms.js.map +1 -1
- package/dist/cjs/internal/convey/sinks.js.map +1 -1
- package/dist/cjs/internal/demux/compressed.js +1 -4
- package/dist/cjs/internal/demux/compressed.js.map +1 -1
- package/dist/cjs/internal/demux/demux.js.map +1 -1
- package/dist/cjs/internal/demux/fan.js +1 -4
- package/dist/cjs/internal/demux/fan.js.map +1 -1
- package/dist/cjs/internal/demux/hijack.js +4 -44
- package/dist/cjs/internal/demux/hijack.js.map +1 -1
- package/dist/cjs/internal/demux/multiplexed.js +22 -97
- package/dist/cjs/internal/demux/multiplexed.js.map +1 -1
- package/dist/cjs/internal/demux/pack.js +1 -4
- package/dist/cjs/internal/demux/pack.js.map +1 -1
- package/dist/cjs/internal/demux/raw.js +27 -115
- package/dist/cjs/internal/demux/raw.js.map +1 -1
- package/dist/cjs/internal/demux/stdio.js +2 -30
- package/dist/cjs/internal/demux/stdio.js.map +1 -1
- package/dist/cjs/internal/endpoints/configs.js.map +1 -1
- package/dist/cjs/internal/endpoints/containers.js +3 -4
- package/dist/cjs/internal/endpoints/containers.js.map +1 -1
- package/dist/cjs/internal/endpoints/distribution.js.map +1 -1
- package/dist/cjs/internal/endpoints/execs.js +2 -2
- package/dist/cjs/internal/endpoints/execs.js.map +1 -1
- package/dist/cjs/internal/endpoints/images.js.map +1 -1
- package/dist/cjs/internal/endpoints/networks.js.map +1 -1
- package/dist/cjs/internal/endpoints/nodes.js.map +1 -1
- package/dist/cjs/internal/endpoints/plugins.js.map +1 -1
- package/dist/cjs/internal/endpoints/secrets.js.map +1 -1
- package/dist/cjs/internal/endpoints/services.js.map +1 -1
- package/dist/cjs/internal/endpoints/session.js.map +1 -1
- package/dist/cjs/internal/endpoints/swarm.js.map +1 -1
- package/dist/cjs/internal/endpoints/system.js.map +1 -1
- package/dist/cjs/internal/endpoints/tasks.js.map +1 -1
- package/dist/cjs/internal/endpoints/volumes.js.map +1 -1
- package/dist/cjs/internal/engines/dind.js.map +1 -1
- package/dist/cjs/internal/engines/docker.js +32 -36
- package/dist/cjs/internal/engines/docker.js.map +1 -1
- package/dist/cjs/internal/engines/dockerCompose.js +1 -1
- package/dist/cjs/internal/engines/dockerCompose.js.map +1 -1
- package/dist/cjs/internal/platforms/agnostic.js +6 -6
- package/dist/cjs/internal/platforms/agnostic.js.map +1 -1
- package/dist/cjs/internal/platforms/fetch.js +1 -1
- package/dist/cjs/internal/platforms/fetch.js.map +1 -1
- package/dist/cjs/internal/platforms/node.js +1 -1
- package/dist/cjs/internal/platforms/node.js.map +1 -1
- package/dist/cjs/internal/platforms/undici.js +1 -1
- package/dist/cjs/internal/platforms/undici.js.map +1 -1
- package/dist/cjs/internal/platforms/web.js +1 -1
- package/dist/cjs/internal/platforms/web.js.map +1 -1
- package/dist/cjs/internal/schemas/cidrBlock.js.map +1 -1
- package/dist/dts/Callbacks.d.ts +6 -6
- package/dist/dts/Callbacks.d.ts.map +1 -1
- package/dist/dts/DindEngine.d.ts +1 -1
- package/dist/dts/DindEngine.d.ts.map +1 -1
- package/dist/dts/DockerEngine.d.ts +14 -14
- package/dist/dts/DockerEngine.d.ts.map +1 -1
- package/dist/dts/MobyConnection.d.ts +3 -3
- package/dist/dts/MobyConnection.d.ts.map +1 -1
- package/dist/dts/MobyDemux.d.ts +631 -12
- package/dist/dts/MobyDemux.d.ts.map +1 -1
- package/dist/dts/MobyPlatforms.d.ts +3 -5
- package/dist/dts/MobyPlatforms.d.ts.map +1 -1
- package/dist/dts/Promises.d.ts +3 -3
- package/dist/dts/internal/blobs/constants.d.ts +5 -1
- package/dist/dts/internal/blobs/constants.d.ts.map +1 -1
- package/dist/dts/internal/demux/compressed.d.ts +1 -10
- package/dist/dts/internal/demux/compressed.d.ts.map +1 -1
- package/dist/dts/internal/demux/demux.d.ts +2 -3
- package/dist/dts/internal/demux/demux.d.ts.map +1 -1
- package/dist/dts/internal/demux/fan.d.ts +1 -25
- package/dist/dts/internal/demux/fan.d.ts.map +1 -1
- package/dist/dts/internal/demux/hijack.d.ts +1 -53
- package/dist/dts/internal/demux/hijack.d.ts.map +1 -1
- package/dist/dts/internal/demux/multiplexed.d.ts +1 -217
- package/dist/dts/internal/demux/multiplexed.d.ts.map +1 -1
- package/dist/dts/internal/demux/pack.d.ts +1 -16
- package/dist/dts/internal/demux/pack.d.ts.map +1 -1
- package/dist/dts/internal/demux/raw.d.ts +1 -364
- package/dist/dts/internal/demux/raw.d.ts.map +1 -1
- package/dist/dts/internal/demux/stdio.d.ts +0 -44
- package/dist/dts/internal/demux/stdio.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/configs.d.ts +4 -4
- package/dist/dts/internal/endpoints/configs.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/containers.d.ts +7 -8
- package/dist/dts/internal/endpoints/containers.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/distribution.d.ts +4 -4
- package/dist/dts/internal/endpoints/distribution.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/execs.d.ts +7 -8
- package/dist/dts/internal/endpoints/execs.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/images.d.ts +4 -4
- package/dist/dts/internal/endpoints/images.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/networks.d.ts +4 -4
- package/dist/dts/internal/endpoints/networks.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/nodes.d.ts +4 -4
- package/dist/dts/internal/endpoints/nodes.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/plugins.d.ts +5 -5
- package/dist/dts/internal/endpoints/plugins.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/secrets.d.ts +4 -4
- package/dist/dts/internal/endpoints/secrets.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/services.d.ts +4 -4
- package/dist/dts/internal/endpoints/services.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/session.d.ts +3 -3
- package/dist/dts/internal/endpoints/session.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/swarm.d.ts +4 -4
- package/dist/dts/internal/endpoints/swarm.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/system.d.ts +4 -4
- package/dist/dts/internal/endpoints/system.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/tasks.d.ts +3 -3
- package/dist/dts/internal/endpoints/tasks.d.ts.map +1 -1
- package/dist/dts/internal/endpoints/volumes.d.ts +4 -4
- package/dist/dts/internal/endpoints/volumes.d.ts.map +1 -1
- package/dist/dts/internal/generated/ContainerCreateRequest.generated.d.ts +3 -3
- package/dist/dts/internal/generated/ContainerHostConfig.generated.d.ts +3 -3
- package/dist/dts/internal/generated/ContainerPathStat.generated.d.ts +2 -2
- package/dist/dts/internal/generated/PluginPrivilege.generated.d.ts +2 -2
- package/dist/dts/internal/generated/SystemRuntimeWithStatus.generated.d.ts +2 -2
- package/dist/dts/internal/schemas/cidrBlock.d.ts +2 -2
- package/dist/dts/internal/schemas/cidrBlock.d.ts.map +1 -1
- package/dist/esm/Callbacks.js.map +1 -1
- package/dist/esm/DindEngine.js.map +1 -1
- package/dist/esm/DockerEngine.js +1 -1
- package/dist/esm/DockerEngine.js.map +1 -1
- package/dist/esm/MobyConnection.js.map +1 -1
- package/dist/esm/MobyDemux.js +292 -12
- package/dist/esm/MobyDemux.js.map +1 -1
- package/dist/esm/MobyPlatforms.js +2 -3
- package/dist/esm/MobyPlatforms.js.map +1 -1
- package/dist/esm/internal/convey/sinks.js.map +1 -1
- package/dist/esm/internal/demux/compressed.js +1 -4
- package/dist/esm/internal/demux/compressed.js.map +1 -1
- package/dist/esm/internal/demux/demux.js.map +1 -1
- package/dist/esm/internal/demux/fan.js +1 -4
- package/dist/esm/internal/demux/fan.js.map +1 -1
- package/dist/esm/internal/demux/hijack.js +4 -44
- package/dist/esm/internal/demux/hijack.js.map +1 -1
- package/dist/esm/internal/demux/multiplexed.js +22 -97
- package/dist/esm/internal/demux/multiplexed.js.map +1 -1
- package/dist/esm/internal/demux/pack.js +1 -4
- package/dist/esm/internal/demux/pack.js.map +1 -1
- package/dist/esm/internal/demux/raw.js +24 -112
- package/dist/esm/internal/demux/raw.js.map +1 -1
- package/dist/esm/internal/demux/stdio.js +2 -30
- package/dist/esm/internal/demux/stdio.js.map +1 -1
- package/dist/esm/internal/endpoints/configs.js.map +1 -1
- package/dist/esm/internal/endpoints/containers.js +3 -4
- package/dist/esm/internal/endpoints/containers.js.map +1 -1
- package/dist/esm/internal/endpoints/distribution.js.map +1 -1
- package/dist/esm/internal/endpoints/execs.js +2 -2
- package/dist/esm/internal/endpoints/execs.js.map +1 -1
- package/dist/esm/internal/endpoints/images.js.map +1 -1
- package/dist/esm/internal/endpoints/networks.js.map +1 -1
- package/dist/esm/internal/endpoints/nodes.js.map +1 -1
- package/dist/esm/internal/endpoints/plugins.js.map +1 -1
- package/dist/esm/internal/endpoints/secrets.js.map +1 -1
- package/dist/esm/internal/endpoints/services.js.map +1 -1
- package/dist/esm/internal/endpoints/session.js.map +1 -1
- package/dist/esm/internal/endpoints/swarm.js.map +1 -1
- package/dist/esm/internal/endpoints/system.js.map +1 -1
- package/dist/esm/internal/endpoints/tasks.js.map +1 -1
- package/dist/esm/internal/endpoints/volumes.js.map +1 -1
- package/dist/esm/internal/engines/dind.js.map +1 -1
- package/dist/esm/internal/engines/docker.js +32 -36
- package/dist/esm/internal/engines/docker.js.map +1 -1
- package/dist/esm/internal/engines/dockerCompose.js +1 -1
- package/dist/esm/internal/engines/dockerCompose.js.map +1 -1
- package/dist/esm/internal/platforms/agnostic.js +3 -3
- package/dist/esm/internal/platforms/agnostic.js.map +1 -1
- package/dist/esm/internal/platforms/fetch.js +1 -1
- package/dist/esm/internal/platforms/fetch.js.map +1 -1
- package/dist/esm/internal/platforms/needs.js +1 -0
- package/dist/esm/internal/platforms/needs.js.map +1 -1
- package/dist/esm/internal/platforms/node.js +1 -1
- package/dist/esm/internal/platforms/node.js.map +1 -1
- package/dist/esm/internal/platforms/undici.js +1 -1
- package/dist/esm/internal/platforms/undici.js.map +1 -1
- package/dist/esm/internal/platforms/web.js +1 -1
- package/dist/esm/internal/platforms/web.js.map +1 -1
- package/dist/esm/internal/schemas/cidrBlock.js.map +1 -1
- package/package.json +12 -12
- package/src/Callbacks.ts +4 -4
- package/src/DindEngine.ts +1 -2
- package/src/DockerEngine.ts +25 -27
- package/src/MobyConnection.ts +3 -4
- package/src/MobyDemux.ts +749 -12
- package/src/MobyPlatforms.ts +11 -5
- package/src/internal/blobs/constants.ts +4 -1
- package/src/internal/convey/sinks.ts +1 -2
- package/src/internal/demux/compressed.ts +6 -19
- package/src/internal/demux/demux.ts +6 -10
- package/src/internal/demux/fan.ts +16 -25
- package/src/internal/demux/hijack.ts +11 -50
- package/src/internal/demux/multiplexed.ts +55 -205
- package/src/internal/demux/pack.ts +9 -16
- package/src/internal/demux/raw.ts +66 -336
- package/src/internal/demux/stdio.ts +7 -39
- package/src/internal/endpoints/configs.ts +5 -4
- package/src/internal/endpoints/containers.ts +10 -11
- package/src/internal/endpoints/distribution.ts +5 -4
- package/src/internal/endpoints/execs.ts +18 -11
- package/src/internal/endpoints/images.ts +5 -4
- package/src/internal/endpoints/networks.ts +5 -4
- package/src/internal/endpoints/nodes.ts +5 -4
- package/src/internal/endpoints/plugins.ts +6 -5
- package/src/internal/endpoints/secrets.ts +5 -4
- package/src/internal/endpoints/services.ts +5 -4
- package/src/internal/endpoints/session.ts +4 -3
- package/src/internal/endpoints/swarm.ts +5 -4
- package/src/internal/endpoints/system.ts +5 -4
- package/src/internal/endpoints/tasks.ts +4 -3
- package/src/internal/endpoints/volumes.ts +5 -4
- package/src/internal/engines/dind.ts +3 -4
- package/src/internal/engines/docker.ts +23 -32
- package/src/internal/engines/dockerCompose.ts +2 -2
- package/src/internal/platforms/agnostic.ts +3 -3
- package/src/internal/platforms/fetch.ts +1 -1
- package/src/internal/platforms/needs.ts +2 -0
- package/src/internal/platforms/node.ts +1 -1
- package/src/internal/platforms/undici.ts +1 -1
- package/src/internal/platforms/web.ts +1 -1
- package/src/internal/schemas/cidrBlock.ts +2 -1
package/src/MobyPlatforms.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
import type * as HttpClient from "@effect/platform/HttpClient";
|
|
8
8
|
import type * as Socket from "@effect/platform/Socket";
|
|
9
|
-
import type * as
|
|
9
|
+
import type * as MobyConnection from "./MobyConnection.js";
|
|
10
10
|
|
|
11
|
-
import * as
|
|
11
|
+
import * as Layer from "effect/Layer";
|
|
12
12
|
import * as internalAgnostic from "./internal/platforms/agnostic.js";
|
|
13
13
|
import * as internalBun from "./internal/platforms/bun.js";
|
|
14
14
|
import * as internalDeno from "./internal/platforms/deno.js";
|
|
@@ -26,7 +26,15 @@ import * as internalWeb from "./internal/platforms/web.js";
|
|
|
26
26
|
*/
|
|
27
27
|
export const makeAgnosticHttpClientLayer: (
|
|
28
28
|
connectionOptions: MobyConnection.MobyConnectionOptions
|
|
29
|
-
) => Layer.Layer<
|
|
29
|
+
) => Layer.Layer<
|
|
30
|
+
HttpClient.HttpClient | Socket.WebSocketConstructor,
|
|
31
|
+
never,
|
|
32
|
+
HttpClient.HttpClient | Socket.WebSocketConstructor
|
|
33
|
+
> = (connectionOptions) =>
|
|
34
|
+
Layer.merge(
|
|
35
|
+
Layer.context<Socket.WebSocketConstructor>(),
|
|
36
|
+
internalAgnostic.makeAgnosticHttpClientLayer(connectionOptions)
|
|
37
|
+
);
|
|
30
38
|
|
|
31
39
|
/**
|
|
32
40
|
* Given the moby connection options, it will construct a layer that provides a
|
|
@@ -52,8 +60,6 @@ export const makeBunHttpClientLayer: (
|
|
|
52
60
|
*
|
|
53
61
|
* FIXME: https://github.com/denoland/deno/issues/21436?
|
|
54
62
|
*
|
|
55
|
-
* Will fallback to using undici for now because that seems to work
|
|
56
|
-
*
|
|
57
63
|
* @since 1.0.0
|
|
58
64
|
* @category Deno
|
|
59
65
|
*/
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/** @internal */
|
|
2
2
|
export const DefaultDindBaseImage: RecommendedDindBaseImages = "docker.io/library/docker:dind-rootless" as const;
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* @since 1.0.0
|
|
6
|
+
* @category Types
|
|
7
|
+
*/
|
|
5
8
|
export type RecommendedDindBaseImages =
|
|
6
9
|
| "docker.io/library/docker:dind-rootless"
|
|
7
10
|
| "docker.io/library/docker:23-dind-rootless"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type * as Chunk from "effect/Chunk";
|
|
2
2
|
import type * as Scope from "effect/Scope";
|
|
3
|
+
import type { JSONMessage } from "../generated/JSONMessage.generated.js";
|
|
3
4
|
|
|
4
5
|
import * as Console from "effect/Console";
|
|
5
6
|
import * as Effect from "effect/Effect";
|
|
@@ -8,8 +9,6 @@ import * as Predicate from "effect/Predicate";
|
|
|
8
9
|
import * as Sink from "effect/Sink";
|
|
9
10
|
import * as Stream from "effect/Stream";
|
|
10
11
|
|
|
11
|
-
import { JSONMessage } from "../generated/JSONMessage.generated.js";
|
|
12
|
-
|
|
13
12
|
/** @internal */
|
|
14
13
|
export const waitForProgressToComplete = <E1, R1>(
|
|
15
14
|
stream: Stream.Stream<JSONMessage, E1, R1>
|
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import type * as MobyDemux from "../../MobyDemux.js";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* @since 1.0.0
|
|
5
|
-
* @category Types
|
|
6
|
-
*/
|
|
7
|
-
export type CompressedDemuxOutput<A1, A2> = A1 extends undefined | void
|
|
8
|
-
? A2 extends undefined | void
|
|
9
|
-
? void
|
|
10
|
-
: readonly [stdout: undefined, stderr: A2]
|
|
11
|
-
: A2 extends undefined | void
|
|
12
|
-
? readonly [stdout: A1, stderr: undefined]
|
|
13
|
-
: readonly [stdout: A1, stderr: A2];
|
|
3
|
+
import * as Predicate from "effect/Predicate";
|
|
14
4
|
|
|
15
|
-
/**
|
|
16
|
-
* @since 1.0.0
|
|
17
|
-
* @category Demux Helpers
|
|
18
|
-
*/
|
|
5
|
+
/** @internal */
|
|
19
6
|
export const compressDemuxOutput = <A1, A2>(
|
|
20
7
|
data: readonly [ranStdout: A1, ranStderr: A2]
|
|
21
|
-
): CompressedDemuxOutput<A1, A2> =>
|
|
8
|
+
): MobyDemux.CompressedDemuxOutput<A1, A2> =>
|
|
22
9
|
Predicate.isUndefined(data[0]) && Predicate.isUndefined(data[1])
|
|
23
|
-
? (void undefined as CompressedDemuxOutput<A1, A2>)
|
|
24
|
-
: (data as CompressedDemuxOutput<A1, A2>);
|
|
10
|
+
? (void undefined as MobyDemux.CompressedDemuxOutput<A1, A2>)
|
|
11
|
+
: (data as MobyDemux.CompressedDemuxOutput<A1, A2>);
|
|
@@ -3,18 +3,14 @@ import type * as Effect from "effect/Effect";
|
|
|
3
3
|
import type * as ParseResult from "effect/ParseResult";
|
|
4
4
|
import type * as Scope from "effect/Scope";
|
|
5
5
|
import type * as Stream from "effect/Stream";
|
|
6
|
+
import type * as MobyDemux from "../../MobyDemux.js";
|
|
6
7
|
|
|
7
8
|
import * as Function from "effect/Function";
|
|
8
9
|
import * as Sink from "effect/Sink";
|
|
9
10
|
import * as Tuple from "effect/Tuple";
|
|
10
11
|
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
EitherMultiplexedInput,
|
|
14
|
-
isMultiplexedChannel,
|
|
15
|
-
isMultiplexedSocket,
|
|
16
|
-
} from "./multiplexed.js";
|
|
17
|
-
import { demuxRawToSingleSink, EitherRawInput, isRawChannel, isRawSocket } from "./raw.js";
|
|
12
|
+
import { demuxMultiplexedToSingleSink, isMultiplexedChannel, isMultiplexedSocket } from "./multiplexed.js";
|
|
13
|
+
import { demuxRawToSingleSink, isRawChannel, isRawSocket } from "./raw.js";
|
|
18
14
|
|
|
19
15
|
/**
|
|
20
16
|
* Demux either a raw socket or a multiplexed socket to a single sink.
|
|
@@ -29,7 +25,7 @@ export const demuxToSingleSink = Function.dual<
|
|
|
29
25
|
sink: Sink.Sink<A1, string, L1, E2, R2>,
|
|
30
26
|
options?: { encoding?: string | undefined } | undefined
|
|
31
27
|
) => <IE = never, OE = Socket.SocketError, R3 = never>(
|
|
32
|
-
sockets: EitherRawInput<E1 | IE, OE, R3> | EitherMultiplexedInput<E1 | IE, OE, R3>
|
|
28
|
+
sockets: MobyDemux.EitherRawInput<E1 | IE, OE, R3> | MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R3>
|
|
33
29
|
) => Effect.Effect<
|
|
34
30
|
A1,
|
|
35
31
|
E1 | E2 | IE | OE | ParseResult.ParseError,
|
|
@@ -37,7 +33,7 @@ export const demuxToSingleSink = Function.dual<
|
|
|
37
33
|
>,
|
|
38
34
|
// Data-first signature.
|
|
39
35
|
<A1, L1, E1, E2, R1, R2, IE = never, OE = Socket.SocketError, R3 = never>(
|
|
40
|
-
sockets: EitherRawInput<E1 | IE, OE, R3> | EitherMultiplexedInput<E1 | IE, OE, R3>,
|
|
36
|
+
sockets: MobyDemux.EitherRawInput<E1 | IE, OE, R3> | MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R3>,
|
|
41
37
|
source: Stream.Stream<string | Uint8Array, E1, R1>,
|
|
42
38
|
sink: Sink.Sink<A1, string, L1, E2, R2>,
|
|
43
39
|
options?: { encoding?: string | undefined } | undefined
|
|
@@ -59,7 +55,7 @@ export const demuxToSingleSink = Function.dual<
|
|
|
59
55
|
|
|
60
56
|
// Implementation, need the type parameters for checking the underlying.
|
|
61
57
|
<A1, L1, E1, E2, R1, R2, IE = never, OE = Socket.SocketError, R3 = never>(
|
|
62
|
-
socketOptions: EitherRawInput<E1 | IE, OE, R3> | EitherMultiplexedInput<E1 | IE, OE, R3>,
|
|
58
|
+
socketOptions: MobyDemux.EitherRawInput<E1 | IE, OE, R3> | MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R3>,
|
|
63
59
|
source: Stream.Stream<string | Uint8Array, E1, R1>,
|
|
64
60
|
sink: Sink.Sink<A1, string, L1, E2, R2>,
|
|
65
61
|
options?: { encoding?: string | undefined } | undefined
|
|
@@ -2,6 +2,7 @@ import type * as Socket from "@effect/platform/Socket";
|
|
|
2
2
|
import type * as Chunk from "effect/Chunk";
|
|
3
3
|
import type * as ParseResult from "effect/ParseResult";
|
|
4
4
|
import type * as Scope from "effect/Scope";
|
|
5
|
+
import type * as MobyDemux from "../../MobyDemux.js";
|
|
5
6
|
|
|
6
7
|
import * as Channel from "effect/Channel";
|
|
7
8
|
import * as Effect from "effect/Effect";
|
|
@@ -13,41 +14,31 @@ import * as Queue from "effect/Queue";
|
|
|
13
14
|
import * as Sink from "effect/Sink";
|
|
14
15
|
import * as Stream from "effect/Stream";
|
|
15
16
|
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
EitherMultiplexedInput,
|
|
19
|
-
isMultiplexedChannel,
|
|
20
|
-
isMultiplexedSocket,
|
|
21
|
-
MultiplexedChannel,
|
|
22
|
-
MultiplexedSocket,
|
|
23
|
-
} from "./multiplexed.js";
|
|
24
|
-
import { makeRawChannel, RawChannel, rawFromStreamWith } from "./raw.js";
|
|
17
|
+
import { demuxMultiplexedToSeparateSinks, isMultiplexedChannel, isMultiplexedSocket } from "./multiplexed.js";
|
|
18
|
+
import { makeRawChannel, rawFromStreamWith } from "./raw.js";
|
|
25
19
|
|
|
26
|
-
/**
|
|
27
|
-
* @since 1.0.0
|
|
28
|
-
* @category Fanning
|
|
29
|
-
*/
|
|
20
|
+
/** @internal */
|
|
30
21
|
export const fan = Function.dual<
|
|
31
22
|
<IE = never, OE = Socket.SocketError, R = never>(options: {
|
|
32
23
|
requestedCapacity: number;
|
|
33
24
|
encoding?: string | undefined;
|
|
34
|
-
}) => (multiplexedInput: EitherMultiplexedInput<IE, OE, R>) => Effect.Effect<
|
|
25
|
+
}) => (multiplexedInput: MobyDemux.EitherMultiplexedInput<IE, OE, R>) => Effect.Effect<
|
|
35
26
|
{
|
|
36
|
-
stdin: RawChannel<IE, OE | ParseResult.ParseError, never>;
|
|
37
|
-
stdout: RawChannel<IE, OE | ParseResult.ParseError, never>;
|
|
38
|
-
stderr: RawChannel<IE, OE | ParseResult.ParseError, never>;
|
|
27
|
+
stdin: MobyDemux.RawChannel<IE, IE | OE | ParseResult.ParseError, never>;
|
|
28
|
+
stdout: MobyDemux.RawChannel<IE, IE | OE | ParseResult.ParseError, never>;
|
|
29
|
+
stderr: MobyDemux.RawChannel<IE, IE | OE | ParseResult.ParseError, never>;
|
|
39
30
|
},
|
|
40
31
|
never,
|
|
41
32
|
Exclude<R, Scope.Scope>
|
|
42
33
|
>,
|
|
43
34
|
<IE = never, OE = Socket.SocketError, R = never>(
|
|
44
|
-
multiplexedInput: EitherMultiplexedInput<IE, OE, R>,
|
|
35
|
+
multiplexedInput: MobyDemux.EitherMultiplexedInput<IE, OE, R>,
|
|
45
36
|
options: { requestedCapacity: number; encoding?: string | undefined }
|
|
46
37
|
) => Effect.Effect<
|
|
47
38
|
{
|
|
48
|
-
stdin: RawChannel<IE, OE | ParseResult.ParseError, never>;
|
|
49
|
-
stdout: RawChannel<IE, OE | ParseResult.ParseError, never>;
|
|
50
|
-
stderr: RawChannel<IE, OE | ParseResult.ParseError, never>;
|
|
39
|
+
stdin: MobyDemux.RawChannel<IE, IE | OE | ParseResult.ParseError, never>;
|
|
40
|
+
stdout: MobyDemux.RawChannel<IE, IE | OE | ParseResult.ParseError, never>;
|
|
41
|
+
stderr: MobyDemux.RawChannel<IE, IE | OE | ParseResult.ParseError, never>;
|
|
51
42
|
},
|
|
52
43
|
never,
|
|
53
44
|
Exclude<R, Scope.Scope>
|
|
@@ -55,7 +46,7 @@ export const fan = Function.dual<
|
|
|
55
46
|
>(
|
|
56
47
|
(arguments_) => isMultiplexedChannel(arguments_[0]) || isMultiplexedSocket(arguments_[0]),
|
|
57
48
|
Effect.fnUntraced(function* <IE = never, OE = Socket.SocketError, R = never>(
|
|
58
|
-
multiplexedInput:
|
|
49
|
+
multiplexedInput: MobyDemux.EitherMultiplexedInput<IE, OE, R>,
|
|
59
50
|
options: { requestedCapacity: number; encoding?: string | undefined }
|
|
60
51
|
) {
|
|
61
52
|
const mutex = yield* Effect.makeSemaphore(1);
|
|
@@ -106,7 +97,7 @@ export const fan = Function.dual<
|
|
|
106
97
|
const independentStdinChannel = Channel.toQueue(stdinProducerQueue)
|
|
107
98
|
.pipe(Channel.mapInput(Function.constVoid))
|
|
108
99
|
.pipe(Channel.zipLeft(motherChannel, { concurrent: true }))
|
|
109
|
-
.pipe(makeRawChannel<IE, OE | ParseResult.ParseError, never>);
|
|
100
|
+
.pipe(makeRawChannel<IE, IE | OE | ParseResult.ParseError, never>);
|
|
110
101
|
|
|
111
102
|
// Any one of these will kick off the mother demux, but only one will
|
|
112
103
|
const independentStdoutChannel = Stream.fromQueue(stdoutConsumerQueue)
|
|
@@ -114,7 +105,7 @@ export const fan = Function.dual<
|
|
|
114
105
|
.pipe(rawFromStreamWith<IE>())
|
|
115
106
|
.pipe(({ underlying }) => underlying)
|
|
116
107
|
.pipe(Channel.zipLeft(motherChannel, { concurrent: true }))
|
|
117
|
-
.pipe(makeRawChannel<IE, OE | ParseResult.ParseError, never>);
|
|
108
|
+
.pipe(makeRawChannel<IE, IE | OE | ParseResult.ParseError, never>);
|
|
118
109
|
|
|
119
110
|
// Any one of these will kick off the mother demux, but only one will
|
|
120
111
|
const independentStderrChannel = Stream.fromQueue(stderrConsumerQueue)
|
|
@@ -122,7 +113,7 @@ export const fan = Function.dual<
|
|
|
122
113
|
.pipe(rawFromStreamWith<IE>())
|
|
123
114
|
.pipe(({ underlying }) => underlying)
|
|
124
115
|
.pipe(Channel.zipLeft(motherChannel, { concurrent: true }))
|
|
125
|
-
.pipe(makeRawChannel<IE, OE | ParseResult.ParseError, never>);
|
|
116
|
+
.pipe(makeRawChannel<IE, IE | OE | ParseResult.ParseError, never>);
|
|
126
117
|
|
|
127
118
|
return {
|
|
128
119
|
stdin: independentStdinChannel,
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import type * as HttpClientResponse from "@effect/platform/HttpClientResponse";
|
|
2
|
+
import type * as MobyDemux from "../../MobyDemux.js";
|
|
3
|
+
import type { IExposeSocketOnEffectClientResponseHack } from "../platforms/node.js";
|
|
2
4
|
|
|
3
5
|
import * as Socket from "@effect/platform/Socket";
|
|
4
6
|
import * as Effect from "effect/Effect";
|
|
5
7
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { makeRawSocket, RawSocket, responseIsRawResponse } from "./raw.js";
|
|
8
|
+
import { makeMultiplexedSocket, responseIsMultiplexedResponse } from "./multiplexed.js";
|
|
9
|
+
import { makeRawSocket, responseIsRawResponse } from "./raw.js";
|
|
9
10
|
|
|
10
|
-
/**
|
|
11
|
-
* Hijacks an http response into a socket.
|
|
12
|
-
*
|
|
13
|
-
* FIXME: this function relies on a hack to expose the underlying tcp socket
|
|
14
|
-
* from the http client response. This will only work in NodeJs, not tested in
|
|
15
|
-
* Bun/Deno yet, and will never work in the browser.
|
|
16
|
-
*
|
|
17
|
-
* @since 1.0.0
|
|
18
|
-
* @category Transformations
|
|
19
|
-
*/
|
|
11
|
+
/** @internal */
|
|
20
12
|
export const hijackResponseUnsafe = (
|
|
21
13
|
response: HttpClientResponse.HttpClientResponse
|
|
22
14
|
): Effect.Effect<Socket.Socket, Socket.SocketError, never> =>
|
|
@@ -28,20 +20,10 @@ export const hijackResponseUnsafe = (
|
|
|
28
20
|
}
|
|
29
21
|
);
|
|
30
22
|
|
|
31
|
-
/**
|
|
32
|
-
* Transforms an http response into a multiplexed stream socket. If the response
|
|
33
|
-
* is not a multiplexed stream socket, then an error will be returned.
|
|
34
|
-
*
|
|
35
|
-
* FIXME: this function relies on a hack to expose the underlying tcp socket
|
|
36
|
-
* from the http client response. This will only work in NodeJs, not tested in
|
|
37
|
-
* Bun/Deno yet, and will never work in the browser.
|
|
38
|
-
*
|
|
39
|
-
* @since 1.0.0
|
|
40
|
-
* @category Predicates
|
|
41
|
-
*/
|
|
23
|
+
/** @internal */
|
|
42
24
|
export const responseToMultiplexedStreamSocketOrFailUnsafe = (
|
|
43
25
|
response: HttpClientResponse.HttpClientResponse
|
|
44
|
-
): Effect.Effect<MultiplexedSocket, Socket.SocketError, never> => {
|
|
26
|
+
): Effect.Effect<MobyDemux.MultiplexedSocket, Socket.SocketError, never> => {
|
|
45
27
|
if (!responseIsMultiplexedResponse(response)) {
|
|
46
28
|
return Effect.fail(
|
|
47
29
|
new Socket.SocketGenericError({
|
|
@@ -54,20 +36,10 @@ export const responseToMultiplexedStreamSocketOrFailUnsafe = (
|
|
|
54
36
|
return Effect.map(hijackResponseUnsafe(response), makeMultiplexedSocket);
|
|
55
37
|
};
|
|
56
38
|
|
|
57
|
-
/**
|
|
58
|
-
* Transforms an http response into a raw stream socket. If the response is not
|
|
59
|
-
* a raw stream socket, then an error will be returned.
|
|
60
|
-
*
|
|
61
|
-
* FIXME: this function relies on a hack to expose the underlying tcp socket
|
|
62
|
-
* from the http client response. This will only work in NodeJs, not tested in
|
|
63
|
-
* Bun/Deno yet, and will never work in the browser.
|
|
64
|
-
*
|
|
65
|
-
* @since 1.0.0
|
|
66
|
-
* @category Predicates
|
|
67
|
-
*/
|
|
39
|
+
/** @internal */
|
|
68
40
|
export const responseToRawStreamSocketOrFailUnsafe = (
|
|
69
41
|
response: HttpClientResponse.HttpClientResponse
|
|
70
|
-
): Effect.Effect<RawSocket, Socket.SocketError, never> => {
|
|
42
|
+
): Effect.Effect<MobyDemux.RawSocket, Socket.SocketError, never> => {
|
|
71
43
|
if (!responseIsRawResponse(response)) {
|
|
72
44
|
return Effect.fail(
|
|
73
45
|
new Socket.SocketGenericError({
|
|
@@ -80,21 +52,10 @@ export const responseToRawStreamSocketOrFailUnsafe = (
|
|
|
80
52
|
return Effect.map(hijackResponseUnsafe(response), makeRawSocket);
|
|
81
53
|
};
|
|
82
54
|
|
|
83
|
-
/**
|
|
84
|
-
* Transforms an http response into a multiplexed stream socket or a raw stream
|
|
85
|
-
* socket. If the response is neither a multiplexed stream socket nor a raw or
|
|
86
|
-
* can not be transformed, then an error will be returned.
|
|
87
|
-
*
|
|
88
|
-
* FIXME: this function relies on a hack to expose the underlying tcp socket
|
|
89
|
-
* from the http client response. This will only work in NodeJs, not tested in
|
|
90
|
-
* Bun/Deno yet, and will never work in the browser.
|
|
91
|
-
*
|
|
92
|
-
* @since 1.0.0
|
|
93
|
-
* @category Predicates
|
|
94
|
-
*/
|
|
55
|
+
/** @internal */
|
|
95
56
|
export const responseToStreamingSocketOrFailUnsafe = (
|
|
96
57
|
response: HttpClientResponse.HttpClientResponse
|
|
97
|
-
): Effect.Effect<RawSocket | MultiplexedSocket, Socket.SocketError, never> => {
|
|
58
|
+
): Effect.Effect<MobyDemux.RawSocket | MobyDemux.MultiplexedSocket, Socket.SocketError, never> => {
|
|
98
59
|
if (responseIsMultiplexedResponse(response)) {
|
|
99
60
|
return responseToMultiplexedStreamSocketOrFailUnsafe(response);
|
|
100
61
|
}
|