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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type * as HttpClientResponse from "@effect/platform/HttpClientResponse";
|
|
2
2
|
import type * as ParseResult from "effect/ParseResult";
|
|
3
3
|
import type * as Scope from "effect/Scope";
|
|
4
|
+
import type * as MobyDemux from "../../MobyDemux.js";
|
|
4
5
|
|
|
5
6
|
import * as Socket from "@effect/platform/Socket";
|
|
6
7
|
import * as Channel from "effect/Channel";
|
|
@@ -15,179 +16,72 @@ import * as Schema from "effect/Schema";
|
|
|
15
16
|
import * as Sink from "effect/Sink";
|
|
16
17
|
import * as Stream from "effect/Stream";
|
|
17
18
|
import * as Tuple from "effect/Tuple";
|
|
19
|
+
import * as internalCompressed from "./compressed.js";
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @since 1.0.0
|
|
23
|
-
* @category Types
|
|
24
|
-
*/
|
|
21
|
+
/** @internal */
|
|
25
22
|
export const MultiplexedContentType = "application/vnd.docker.multiplexed-stream" as const;
|
|
26
23
|
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
* @category Type ids
|
|
30
|
-
*/
|
|
31
|
-
export const MultiplexedSocketTypeId: unique symbol = Symbol.for(
|
|
24
|
+
/** @internal */
|
|
25
|
+
export const MultiplexedSocketTypeId: MobyDemux.MultiplexedSocketTypeId = Symbol.for(
|
|
32
26
|
"the-moby-effect/demux/MultiplexedSocket"
|
|
33
|
-
) as MultiplexedSocketTypeId;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @since 1.0.0
|
|
37
|
-
* @category Type ids
|
|
38
|
-
*/
|
|
39
|
-
export type MultiplexedSocketTypeId = typeof MultiplexedSocketTypeId;
|
|
27
|
+
) as MobyDemux.MultiplexedSocketTypeId;
|
|
40
28
|
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
* @category Type ids
|
|
44
|
-
*/
|
|
45
|
-
export const MultiplexedChannelTypeId: unique symbol = Symbol.for(
|
|
29
|
+
/** @internal */
|
|
30
|
+
export const MultiplexedChannelTypeId: MobyDemux.MultiplexedChannelTypeId = Symbol.for(
|
|
46
31
|
"the-moby-effect/demux/MultiplexedChannel"
|
|
47
|
-
) as MultiplexedChannelTypeId;
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @since 1.0.0
|
|
51
|
-
* @category Type ids
|
|
52
|
-
*/
|
|
53
|
-
export type MultiplexedChannelTypeId = typeof MultiplexedChannelTypeId;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* When the TTY setting is disabled in POST /containers/create, the HTTP
|
|
57
|
-
* Content-Type header is set to application/vnd.docker.multiplexed-stream and
|
|
58
|
-
* the stream over the hijacked connected is multiplexed to separate out stdout
|
|
59
|
-
* and stderr. The stream consists of a series of frames, each containing a
|
|
60
|
-
* header and a payload.
|
|
61
|
-
*
|
|
62
|
-
* Note for Leo: This exists because the input error type "IE" might not be
|
|
63
|
-
* known at the time of converting the Socket to a Channel.
|
|
64
|
-
*
|
|
65
|
-
* @since 1.0.0
|
|
66
|
-
* @category Branded Types
|
|
67
|
-
*/
|
|
68
|
-
export interface MultiplexedSocket extends Pipeable.Pipeable {
|
|
69
|
-
readonly "content-type": typeof MultiplexedContentType;
|
|
70
|
-
readonly [MultiplexedSocketTypeId]: MultiplexedSocketTypeId;
|
|
71
|
-
readonly underlying: Socket.Socket;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* When the TTY setting is disabled in POST /containers/create, the HTTP
|
|
76
|
-
* Content-Type header is set to application/vnd.docker.multiplexed-stream and
|
|
77
|
-
* the stream over the hijacked connected is multiplexed to separate out stdout
|
|
78
|
-
* and stderr. The stream consists of a series of frames, each containing a
|
|
79
|
-
* header and a payload.
|
|
80
|
-
*
|
|
81
|
-
* Note for Leo: This exists because there is no way to convert from a Channel
|
|
82
|
-
* to a Socket. In fact, with my current effect knowledge, I believe it is
|
|
83
|
-
* impossible to implement. This is still needed though for the pack and fan
|
|
84
|
-
* implementations which seek to return these types.
|
|
85
|
-
*
|
|
86
|
-
* @since 1.0.0
|
|
87
|
-
* @category Branded Types
|
|
88
|
-
*/
|
|
89
|
-
export interface MultiplexedChannel<IE = unknown, OE = Socket.SocketError, R = never> extends Pipeable.Pipeable {
|
|
90
|
-
readonly "content-type": typeof MultiplexedContentType;
|
|
91
|
-
readonly [MultiplexedChannelTypeId]: MultiplexedChannelTypeId;
|
|
92
|
-
readonly underlying: Channel.Channel<
|
|
93
|
-
Chunk.Chunk<Uint8Array>,
|
|
94
|
-
Chunk.Chunk<string | Uint8Array | Socket.CloseEvent>,
|
|
95
|
-
IE | OE,
|
|
96
|
-
IE,
|
|
97
|
-
void,
|
|
98
|
-
unknown,
|
|
99
|
-
R
|
|
100
|
-
>;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @since 1.0.0
|
|
105
|
-
* @category Types
|
|
106
|
-
*/
|
|
107
|
-
export type EitherMultiplexedInput<IE, OE, R> = MultiplexedSocket | MultiplexedChannel<IE, OE, R>;
|
|
32
|
+
) as MobyDemux.MultiplexedChannelTypeId;
|
|
108
33
|
|
|
109
|
-
/**
|
|
110
|
-
|
|
111
|
-
* @category Types
|
|
112
|
-
*/
|
|
113
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
114
|
-
export type AnyMultiplexedInput = EitherMultiplexedInput<any, any, any>;
|
|
115
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* @since 1.0.0
|
|
119
|
-
* @category Constructors
|
|
120
|
-
*/
|
|
121
|
-
export const makeMultiplexedSocket = (underlying: Socket.Socket): MultiplexedSocket => ({
|
|
34
|
+
/** @internal */
|
|
35
|
+
export const makeMultiplexedSocket = (underlying: Socket.Socket): MobyDemux.MultiplexedSocket => ({
|
|
122
36
|
underlying,
|
|
123
37
|
"content-type": MultiplexedContentType,
|
|
124
38
|
[MultiplexedSocketTypeId]: MultiplexedSocketTypeId,
|
|
125
39
|
pipe() {
|
|
126
|
-
// eslint-disable-next-line prefer-rest-params
|
|
127
40
|
return Pipeable.pipeArguments(this, arguments);
|
|
128
41
|
},
|
|
129
42
|
});
|
|
130
43
|
|
|
131
|
-
/**
|
|
132
|
-
* @since 1.0.0
|
|
133
|
-
* @category Constructors
|
|
134
|
-
*/
|
|
44
|
+
/** @internal */
|
|
135
45
|
export const makeMultiplexedChannel = <IE = unknown, OE = Socket.SocketError, R = never>(
|
|
136
46
|
underlying: Channel.Channel<
|
|
137
47
|
Chunk.Chunk<Uint8Array>,
|
|
138
48
|
Chunk.Chunk<string | Uint8Array | Socket.CloseEvent>,
|
|
139
|
-
|
|
49
|
+
OE,
|
|
140
50
|
IE,
|
|
141
51
|
void,
|
|
142
52
|
unknown,
|
|
143
53
|
R
|
|
144
54
|
>
|
|
145
|
-
): MultiplexedChannel<IE, OE, R> => ({
|
|
55
|
+
): MobyDemux.MultiplexedChannel<IE, IE | OE, R> => ({
|
|
146
56
|
underlying,
|
|
147
57
|
"content-type": MultiplexedContentType,
|
|
148
58
|
[MultiplexedChannelTypeId]: MultiplexedChannelTypeId,
|
|
149
59
|
pipe() {
|
|
150
|
-
// eslint-disable-next-line prefer-rest-params
|
|
151
60
|
return Pipeable.pipeArguments(this, arguments);
|
|
152
61
|
},
|
|
153
62
|
});
|
|
154
63
|
|
|
155
|
-
/**
|
|
156
|
-
|
|
157
|
-
* @category Predicates
|
|
158
|
-
*/
|
|
159
|
-
export const isMultiplexedSocket = (u: unknown): u is MultiplexedSocket =>
|
|
64
|
+
/** @internal */
|
|
65
|
+
export const isMultiplexedSocket = (u: unknown): u is MobyDemux.MultiplexedSocket =>
|
|
160
66
|
Predicate.hasProperty(u, MultiplexedSocketTypeId);
|
|
161
67
|
|
|
162
|
-
/**
|
|
163
|
-
* @since 1.0.0
|
|
164
|
-
* @category Predicates
|
|
165
|
-
*/
|
|
68
|
+
/** @internal */
|
|
166
69
|
export const isMultiplexedChannel = <IE = unknown, OE = Socket.SocketError, R = never>(
|
|
167
70
|
u: unknown
|
|
168
|
-
): u is MultiplexedChannel<IE, OE, R> => Predicate.hasProperty(u, MultiplexedChannelTypeId);
|
|
71
|
+
): u is MobyDemux.MultiplexedChannel<IE, IE | OE, R> => Predicate.hasProperty(u, MultiplexedChannelTypeId);
|
|
169
72
|
|
|
170
|
-
/**
|
|
171
|
-
* @since 1.0.0
|
|
172
|
-
* @category Predicates
|
|
173
|
-
*/
|
|
73
|
+
/** @internal */
|
|
174
74
|
export const responseIsMultiplexedResponse = (response: HttpClientResponse.HttpClientResponse): boolean =>
|
|
175
75
|
response.headers["content-type"] === MultiplexedContentType;
|
|
176
76
|
|
|
177
|
-
/**
|
|
178
|
-
* @since 1.0.0
|
|
179
|
-
* @category Types
|
|
180
|
-
*/
|
|
77
|
+
/** @internal */
|
|
181
78
|
export enum MultiplexedHeaderType {
|
|
182
79
|
Stdin = 0,
|
|
183
80
|
Stdout = 1,
|
|
184
81
|
Stderr = 2,
|
|
185
82
|
}
|
|
186
83
|
|
|
187
|
-
/**
|
|
188
|
-
* @since 1.0.0
|
|
189
|
-
* @category Types
|
|
190
|
-
*/
|
|
84
|
+
/** @internal */
|
|
191
85
|
export type MultiplexedAccumulator = {
|
|
192
86
|
headerBytesRead: number;
|
|
193
87
|
messageBytesRead: number;
|
|
@@ -197,41 +91,33 @@ export type MultiplexedAccumulator = {
|
|
|
197
91
|
messageType: number | undefined;
|
|
198
92
|
};
|
|
199
93
|
|
|
200
|
-
/**
|
|
201
|
-
* @since 1.0.0
|
|
202
|
-
* @category Types
|
|
203
|
-
*/
|
|
94
|
+
/** @internal */
|
|
204
95
|
export interface $MultiplexedSchema
|
|
205
96
|
extends Schema.Tuple<
|
|
206
97
|
[Schema.Enums<typeof MultiplexedHeaderType>, Schema.Schema<Uint8Array, ReadonlyArray<number>, never>]
|
|
207
98
|
> {}
|
|
208
99
|
|
|
209
|
-
/**
|
|
210
|
-
* @since 1.0.0
|
|
211
|
-
* @category Schemas
|
|
212
|
-
*/
|
|
100
|
+
/** @internal */
|
|
213
101
|
export const MultiplexedSchema: $MultiplexedSchema = Schema.Tuple(
|
|
214
102
|
Schema.Enums(MultiplexedHeaderType),
|
|
215
103
|
Schema.Uint8Array
|
|
216
104
|
);
|
|
217
105
|
|
|
218
|
-
/**
|
|
219
|
-
* @since 1.0.0
|
|
220
|
-
* @category Conversions
|
|
221
|
-
*/
|
|
106
|
+
/** @internal */
|
|
222
107
|
export const asMultiplexedChannel = <IE = never, OE = Socket.SocketError, R = never>(
|
|
223
|
-
input: EitherMultiplexedInput<IE, OE, R>
|
|
224
|
-
): MultiplexedChannel<IE, OE, R> =>
|
|
108
|
+
input: MobyDemux.EitherMultiplexedInput<IE, OE, R>
|
|
109
|
+
): MobyDemux.MultiplexedChannel<IE, OE, R> =>
|
|
225
110
|
isMultiplexedSocket(input)
|
|
226
|
-
? (makeMultiplexedChannel(Socket.toChannel<IE>(input.underlying)) as unknown as MultiplexedChannel<
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
111
|
+
? (makeMultiplexedChannel(Socket.toChannel<IE>(input.underlying)) as unknown as MobyDemux.MultiplexedChannel<
|
|
112
|
+
IE,
|
|
113
|
+
OE,
|
|
114
|
+
R
|
|
115
|
+
>)
|
|
116
|
+
: (input as MobyDemux.MultiplexedChannel<IE, OE, R>);
|
|
117
|
+
|
|
118
|
+
/** @internal */
|
|
233
119
|
export const multiplexedToStream = <IE = never, OE = Socket.SocketError, R = never>(
|
|
234
|
-
input: EitherMultiplexedInput<IE, OE, R>
|
|
120
|
+
input: MobyDemux.EitherMultiplexedInput<IE, OE, R>
|
|
235
121
|
): Stream.Stream<Uint8Array, IE | OE, R> =>
|
|
236
122
|
Channel.toStream(
|
|
237
123
|
asMultiplexedChannel(input).underlying as Channel.Channel<
|
|
@@ -245,46 +131,29 @@ export const multiplexedToStream = <IE = never, OE = Socket.SocketError, R = nev
|
|
|
245
131
|
>
|
|
246
132
|
);
|
|
247
133
|
|
|
248
|
-
/**
|
|
249
|
-
* @since 1.0.0
|
|
250
|
-
* @category Conversions
|
|
251
|
-
*/
|
|
134
|
+
/** @internal */
|
|
252
135
|
export const multiplexedToSink = <IE = never, OE = Socket.SocketError, R = never>(
|
|
253
|
-
input: EitherMultiplexedInput<IE, OE, R>
|
|
136
|
+
input: MobyDemux.EitherMultiplexedInput<IE, OE, R>
|
|
254
137
|
): Sink.Sink<void, string | Uint8Array | Socket.CloseEvent, Uint8Array, IE | OE, R> =>
|
|
255
138
|
Channel.toSink(asMultiplexedChannel(input).underlying);
|
|
256
139
|
|
|
257
|
-
/**
|
|
258
|
-
* @since 1.0.0
|
|
259
|
-
* @category Conversions
|
|
260
|
-
*/
|
|
140
|
+
/** @internal */
|
|
261
141
|
export const multiplexedFromStreamWith =
|
|
262
142
|
<IE>() =>
|
|
263
|
-
<E, R>(input: Stream.Stream<Uint8Array, IE | E, R>): MultiplexedChannel<IE, E, R> =>
|
|
264
|
-
makeMultiplexedChannel<IE, E, R>(Stream.toChannel(input));
|
|
143
|
+
<E, R>(input: Stream.Stream<Uint8Array, IE | E, R>): MobyDemux.MultiplexedChannel<IE, IE | E, R> =>
|
|
144
|
+
makeMultiplexedChannel<IE, IE | E, R>(Stream.toChannel(input));
|
|
265
145
|
|
|
266
|
-
/**
|
|
267
|
-
* @since 1.0.0
|
|
268
|
-
* @category Conversions
|
|
269
|
-
*/
|
|
146
|
+
/** @internal */
|
|
270
147
|
export const multiplexedFromStream = <E, R>(
|
|
271
148
|
input: Stream.Stream<Uint8Array, E, R>
|
|
272
|
-
): MultiplexedChannel<
|
|
149
|
+
): MobyDemux.MultiplexedChannel<never, E, R> => multiplexedFromStreamWith<never>()(input);
|
|
273
150
|
|
|
274
|
-
/**
|
|
275
|
-
* @since 1.0.0
|
|
276
|
-
* @category Conversions
|
|
277
|
-
*/
|
|
151
|
+
/** @internal */
|
|
278
152
|
export const multiplexedFromSink = <E, R>(
|
|
279
153
|
input: Sink.Sink<void, string | Uint8Array | Socket.CloseEvent, Uint8Array, E, R>
|
|
280
|
-
): MultiplexedChannel<never, E, R> => makeMultiplexedChannel<never, E, R>(Sink.toChannel(input));
|
|
154
|
+
): MobyDemux.MultiplexedChannel<never, E, R> => makeMultiplexedChannel<never, E, R>(Sink.toChannel(input));
|
|
281
155
|
|
|
282
|
-
/**
|
|
283
|
-
* Accumulates the header and its message bytes into a single value.
|
|
284
|
-
*
|
|
285
|
-
* @since 1.0.0
|
|
286
|
-
* @category Demux
|
|
287
|
-
*/
|
|
156
|
+
/** @internal */
|
|
288
157
|
export const demuxMultiplexedFolderSink: Sink.Sink<MultiplexedAccumulator, number, number, never, never> = Sink.fold(
|
|
289
158
|
{
|
|
290
159
|
headerBytesRead: 0,
|
|
@@ -327,10 +196,7 @@ export const demuxMultiplexedFolderSink: Sink.Sink<MultiplexedAccumulator, numbe
|
|
|
327
196
|
}
|
|
328
197
|
);
|
|
329
198
|
|
|
330
|
-
/**
|
|
331
|
-
* @since 1.0.0
|
|
332
|
-
* @category Grouping
|
|
333
|
-
*/
|
|
199
|
+
/** @internal */
|
|
334
200
|
export const aggregate = <E, R>(
|
|
335
201
|
multiplexedStream: Stream.Stream<Uint8Array, E, R>
|
|
336
202
|
): Stream.Stream<readonly [MultiplexedHeaderType, Uint8Array], ParseResult.ParseError | E, R> =>
|
|
@@ -342,12 +208,7 @@ export const aggregate = <E, R>(
|
|
|
342
208
|
Stream.flatMap(Schema.decodeUnknown(MultiplexedSchema))
|
|
343
209
|
);
|
|
344
210
|
|
|
345
|
-
/**
|
|
346
|
-
* Demux a multiplexed socket, all output goes to a single sink.
|
|
347
|
-
*
|
|
348
|
-
* @since 1.0.0
|
|
349
|
-
* @category Demux
|
|
350
|
-
*/
|
|
211
|
+
/** @internal */
|
|
351
212
|
export const demuxMultiplexedToSingleSink = Function.dual<
|
|
352
213
|
// One sink, data-last signature.
|
|
353
214
|
<A1, L1, E1, E2, R1, R2>(
|
|
@@ -355,7 +216,7 @@ export const demuxMultiplexedToSingleSink = Function.dual<
|
|
|
355
216
|
sink: Sink.Sink<A1, readonly [MultiplexedHeaderType, string], L1, E2, R2>,
|
|
356
217
|
options?: { encoding?: string | undefined } | undefined
|
|
357
218
|
) => <IE = never, OE = Socket.SocketError, R3 = never>(
|
|
358
|
-
socket: EitherMultiplexedInput<E1 | IE, OE, R3>
|
|
219
|
+
socket: MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R3>
|
|
359
220
|
) => Effect.Effect<
|
|
360
221
|
A1,
|
|
361
222
|
E1 | E2 | IE | OE | ParseResult.ParseError,
|
|
@@ -363,7 +224,7 @@ export const demuxMultiplexedToSingleSink = Function.dual<
|
|
|
363
224
|
>,
|
|
364
225
|
// One sink, data-first signature.
|
|
365
226
|
<A1, L1, E1, E2, R1, R2, IE = never, OE = Socket.SocketError, R3 = never>(
|
|
366
|
-
socket: EitherMultiplexedInput<E1 | IE, OE, R3>,
|
|
227
|
+
socket: MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R3>,
|
|
367
228
|
source: Stream.Stream<string | Uint8Array | Socket.CloseEvent, E1, R1>,
|
|
368
229
|
sink: Sink.Sink<A1, readonly [MultiplexedHeaderType, string], L1, E2, R2>,
|
|
369
230
|
options?: { encoding?: string | undefined } | undefined
|
|
@@ -388,18 +249,7 @@ export const demuxMultiplexedToSingleSink = Function.dual<
|
|
|
388
249
|
}
|
|
389
250
|
);
|
|
390
251
|
|
|
391
|
-
/**
|
|
392
|
-
* Demux a multiplexed socket. When given a multiplexed socket, we must parse
|
|
393
|
-
* the chunks by headers and then forward each chunk based on its datatype to
|
|
394
|
-
* the correct sink.
|
|
395
|
-
*
|
|
396
|
-
* When partitioning the stream into stdout and stderr, the first sink may
|
|
397
|
-
* advance by up to bufferSize elements further than the slower one. The default
|
|
398
|
-
* bufferSize is 16.
|
|
399
|
-
*
|
|
400
|
-
* @since 1.0.0
|
|
401
|
-
* @category Demux
|
|
402
|
-
*/
|
|
252
|
+
/** @internal */
|
|
403
253
|
export const demuxMultiplexedToSeparateSinks = Function.dual<
|
|
404
254
|
// Two sinks, data-last signature.
|
|
405
255
|
<A1, A2, L1, L2, E1, E2, E3, R1, R2, R3>(
|
|
@@ -408,21 +258,21 @@ export const demuxMultiplexedToSeparateSinks = Function.dual<
|
|
|
408
258
|
sink2: Sink.Sink<A2, string, L2, E3, R3>,
|
|
409
259
|
options?: { bufferSize?: number | undefined; encoding?: string | undefined } | undefined
|
|
410
260
|
) => <IE = never, OE = Socket.SocketError, R4 = never>(
|
|
411
|
-
socket: EitherMultiplexedInput<E1 | IE, OE, R4>
|
|
261
|
+
socket: MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R4>
|
|
412
262
|
) => Effect.Effect<
|
|
413
|
-
CompressedDemuxOutput<A1, A2>,
|
|
263
|
+
MobyDemux.CompressedDemuxOutput<A1, A2>,
|
|
414
264
|
E1 | E2 | E3 | IE | OE | ParseResult.ParseError,
|
|
415
265
|
Exclude<R1, Scope.Scope> | Exclude<R2, Scope.Scope> | Exclude<R3, Scope.Scope> | Exclude<R4, Scope.Scope>
|
|
416
266
|
>,
|
|
417
267
|
// Two sinks, data-first signature.
|
|
418
268
|
<A1, A2, L1, L2, E1, E2, E3, R1, R2, R3, IE = never, OE = Socket.SocketError, R4 = never>(
|
|
419
|
-
socket: EitherMultiplexedInput<E1 | IE, OE, R4>,
|
|
269
|
+
socket: MobyDemux.EitherMultiplexedInput<E1 | IE, OE, R4>,
|
|
420
270
|
source: Stream.Stream<string | Uint8Array | Socket.CloseEvent, E1, R1>,
|
|
421
271
|
sink1: Sink.Sink<A1, string, L1, E2, R2>,
|
|
422
272
|
sink2: Sink.Sink<A2, string, L2, E3, R3>,
|
|
423
273
|
options?: { bufferSize?: number | undefined; encoding?: string | undefined } | undefined
|
|
424
274
|
) => Effect.Effect<
|
|
425
|
-
CompressedDemuxOutput<A1, A2>,
|
|
275
|
+
MobyDemux.CompressedDemuxOutput<A1, A2>,
|
|
426
276
|
E1 | E2 | E3 | IE | OE | ParseResult.ParseError,
|
|
427
277
|
Exclude<R1, Scope.Scope> | Exclude<R2, Scope.Scope> | Exclude<R3, Scope.Scope> | Exclude<R4, Scope.Scope>
|
|
428
278
|
>
|
|
@@ -452,7 +302,7 @@ export const demuxMultiplexedToSeparateSinks = Function.dual<
|
|
|
452
302
|
),
|
|
453
303
|
Effect.map(Effect.allWith({ concurrency: 2 })),
|
|
454
304
|
Effect.flatten,
|
|
455
|
-
Effect.map(compressDemuxOutput),
|
|
305
|
+
Effect.map(internalCompressed.compressDemuxOutput),
|
|
456
306
|
Effect.scoped
|
|
457
307
|
)
|
|
458
308
|
);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type * as Scope from "effect/Scope";
|
|
2
|
+
import type * as MobyDemux from "../../MobyDemux.js";
|
|
2
3
|
|
|
3
4
|
import * as Socket from "@effect/platform/Socket";
|
|
4
5
|
import * as Channel from "effect/Channel";
|
|
@@ -14,18 +15,10 @@ import * as Queue from "effect/Queue";
|
|
|
14
15
|
import * as Sink from "effect/Sink";
|
|
15
16
|
import * as Stream from "effect/Stream";
|
|
16
17
|
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
MultiplexedChannel,
|
|
20
|
-
multiplexedFromStreamWith,
|
|
21
|
-
MultiplexedHeaderType,
|
|
22
|
-
} from "./multiplexed.js";
|
|
23
|
-
import { demuxStdioRawToSeparateSinks, HeterogeneousStdioRawInput } from "./raw.js";
|
|
18
|
+
import { makeMultiplexedChannel, multiplexedFromStreamWith, MultiplexedHeaderType } from "./multiplexed.js";
|
|
19
|
+
import { demuxStdioRawToSeparateSinks } from "./raw.js";
|
|
24
20
|
|
|
25
|
-
/**
|
|
26
|
-
* @since 1.0.0
|
|
27
|
-
* @category Packing
|
|
28
|
-
*/
|
|
21
|
+
/** @internal */
|
|
29
22
|
export const pack = Function.dual<
|
|
30
23
|
<
|
|
31
24
|
IE1 = never,
|
|
@@ -41,9 +34,9 @@ export const pack = Function.dual<
|
|
|
41
34
|
requestedCapacity: number;
|
|
42
35
|
encoding?: string | undefined;
|
|
43
36
|
}) => (
|
|
44
|
-
stdio: HeterogeneousStdioRawInput<IE1, IE2, IE3, OE1, OE2, OE3, R1, R2, R3>
|
|
37
|
+
stdio: MobyDemux.HeterogeneousStdioRawInput<IE1, IE2, IE3, OE1, OE2, OE3, R1, R2, R3>
|
|
45
38
|
) => Effect.Effect<
|
|
46
|
-
MultiplexedChannel<IE1 | IE2 | IE3, IE1 | IE2 | IE3 | OE1 | OE2 | OE3, never>,
|
|
39
|
+
MobyDemux.MultiplexedChannel<IE1 | IE2 | IE3, IE1 | IE2 | IE3 | OE1 | OE2 | OE3, never>,
|
|
47
40
|
never,
|
|
48
41
|
Exclude<R1, Scope.Scope> | Exclude<R2, Scope.Scope> | Exclude<R3, Scope.Scope>
|
|
49
42
|
>,
|
|
@@ -58,10 +51,10 @@ export const pack = Function.dual<
|
|
|
58
51
|
R2 = never,
|
|
59
52
|
R3 = never,
|
|
60
53
|
>(
|
|
61
|
-
stdio: HeterogeneousStdioRawInput<IE1, IE2, IE3, OE1, OE2, OE3, R1, R2, R3>,
|
|
54
|
+
stdio: MobyDemux.HeterogeneousStdioRawInput<IE1, IE2, IE3, OE1, OE2, OE3, R1, R2, R3>,
|
|
62
55
|
options: { requestedCapacity: number; encoding?: string | undefined }
|
|
63
56
|
) => Effect.Effect<
|
|
64
|
-
MultiplexedChannel<IE1 | IE2 | IE3, IE1 | IE2 | IE3 | OE1 | OE2 | OE3, never>,
|
|
57
|
+
MobyDemux.MultiplexedChannel<IE1 | IE2 | IE3, IE1 | IE2 | IE3 | OE1 | OE2 | OE3, never>,
|
|
65
58
|
never,
|
|
66
59
|
Exclude<R1, Scope.Scope> | Exclude<R2, Scope.Scope> | Exclude<R3, Scope.Scope>
|
|
67
60
|
>
|
|
@@ -78,7 +71,7 @@ export const pack = Function.dual<
|
|
|
78
71
|
R2 = never,
|
|
79
72
|
R3 = never,
|
|
80
73
|
>(
|
|
81
|
-
stdio: HeterogeneousStdioRawInput<IE1, IE2, IE3, OE1, OE2, OE3, R1, R2, R3>,
|
|
74
|
+
stdio: MobyDemux.HeterogeneousStdioRawInput<IE1, IE2, IE3, OE1, OE2, OE3, R1, R2, R3>,
|
|
82
75
|
options: { requestedCapacity: number; encoding?: string | undefined }
|
|
83
76
|
) {
|
|
84
77
|
const mutex = yield* Effect.makeSemaphore(1);
|