the-moby-effect 1.51.0 → 1.51.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/Callbacks.d.ts +3 -3
- package/dist/DindEngine.d.ts +3 -3
- package/dist/DockerComposeEngine.d.ts +4 -4
- package/dist/DockerEngine.d.ts +12 -5
- package/dist/DockerEngine.d.ts.map +1 -1
- package/dist/DockerEngine.js +7 -0
- package/dist/DockerEngine.js.map +1 -1
- package/dist/MobyConvey.d.ts +1 -1
- package/dist/MobyDemux.d.ts +21 -1
- package/dist/MobyDemux.d.ts.map +1 -1
- package/dist/MobyDemux.js +20 -0
- package/dist/MobyDemux.js.map +1 -1
- package/dist/MobyEndpoints.d.ts +15 -15
- package/dist/MobyPlatforms.d.ts +1 -1
- package/dist/MobySchemas.d.ts +1 -1
- package/dist/PodmanEngine.d.ts +2 -2
- package/dist/Promises.d.ts +3 -3
- package/dist/internal/demux/multiplexed.js +4 -0
- package/dist/internal/demux/multiplexed.js.map +1 -1
- package/dist/internal/demux/raw.js +4 -0
- package/dist/internal/demux/raw.js.map +1 -1
- package/dist/internal/endpoints/auth.d.ts +56 -0
- package/dist/internal/endpoints/auth.d.ts.map +1 -0
- package/dist/internal/endpoints/auth.js +82 -0
- package/dist/internal/endpoints/auth.js.map +1 -0
- package/dist/internal/endpoints/containers.d.ts.map +1 -1
- package/dist/internal/endpoints/containers.js +3 -3
- package/dist/internal/endpoints/containers.js.map +1 -1
- package/dist/internal/endpoints/execs.d.ts.map +1 -1
- package/dist/internal/endpoints/execs.js +1 -1
- package/dist/internal/endpoints/execs.js.map +1 -1
- package/dist/internal/endpoints/images.d.ts +8 -8
- package/dist/internal/endpoints/images.d.ts.map +1 -1
- package/dist/internal/endpoints/images.js +21 -17
- package/dist/internal/endpoints/images.js.map +1 -1
- package/dist/internal/endpoints/networks.d.ts +26 -4
- package/dist/internal/endpoints/networks.d.ts.map +1 -1
- package/dist/internal/endpoints/networks.js +5 -5
- package/dist/internal/endpoints/networks.js.map +1 -1
- package/dist/internal/endpoints/plugins.d.ts +3 -3
- package/dist/internal/endpoints/plugins.d.ts.map +1 -1
- package/dist/internal/endpoints/plugins.js +12 -11
- package/dist/internal/endpoints/plugins.js.map +1 -1
- package/dist/internal/endpoints/services.d.ts +25 -3
- package/dist/internal/endpoints/services.d.ts.map +1 -1
- package/dist/internal/endpoints/services.js +8 -11
- package/dist/internal/endpoints/services.js.map +1 -1
- package/dist/internal/endpoints/system.d.ts +1 -1
- package/dist/internal/endpoints/system.d.ts.map +1 -1
- package/dist/internal/endpoints/system.js.map +1 -1
- package/dist/internal/engines/dind.js +9 -2
- package/dist/internal/engines/dind.js.map +1 -1
- package/dist/internal/generated/ContainerConfig.generated.d.ts +3 -3
- package/dist/internal/generated/ContainerConfig.generated.js +1 -1
- package/dist/internal/generated/ContainerConfig.generated.js.map +1 -1
- package/dist/internal/generated/ContainerContainerJSONBase.generated.d.ts +3 -3
- package/dist/internal/generated/ContainerContainerJSONBase.generated.js +2 -1
- package/dist/internal/generated/ContainerContainerJSONBase.generated.js.map +1 -1
- package/dist/internal/generated/ContainerCreateRequest.generated.d.ts +3 -3
- package/dist/internal/generated/ContainerDefaultNetworkSettings.generated.d.ts +24 -24
- package/dist/internal/generated/ContainerDefaultNetworkSettings.generated.js +15 -8
- package/dist/internal/generated/ContainerDefaultNetworkSettings.generated.js.map +1 -1
- package/dist/internal/generated/ContainerInspectResponse.generated.d.ts +3 -3
- package/dist/internal/generated/ContainerNetworkSettings.generated.d.ts +45 -45
- package/dist/internal/generated/ContainerNetworkSettingsBase.generated.d.ts +21 -21
- package/dist/internal/generated/ContainerNetworkSettingsBase.generated.js +11 -6
- package/dist/internal/generated/ContainerNetworkSettingsBase.generated.js.map +1 -1
- package/dist/internal/generated/ImageInspectResponse.generated.d.ts +14 -14
- package/dist/internal/generated/ImageInspectResponse.generated.js +8 -4
- package/dist/internal/generated/ImageInspectResponse.generated.js.map +1 -1
- package/dist/internal/generated/NetworkCreateOptions.generated.d.ts +66 -34
- package/dist/internal/generated/NetworkCreateOptions.generated.d.ts.map +1 -1
- package/dist/internal/generated/NetworkCreateOptions.generated.js +28 -12
- package/dist/internal/generated/NetworkCreateOptions.generated.js.map +1 -1
- package/dist/internal/generated/NetworkCreateRequest.generated.d.ts +66 -34
- package/dist/internal/generated/NetworkCreateRequest.generated.d.ts.map +1 -1
- package/dist/internal/generated/NetworkInspect.generated.d.ts +11 -11
- package/dist/internal/generated/NetworkInspect.generated.js +5 -3
- package/dist/internal/generated/NetworkInspect.generated.js.map +1 -1
- package/dist/internal/generated/TypesDiskUsage.generated.d.ts +3 -3
- package/dist/internal/generated/TypesDiskUsage.generated.js +2 -1
- package/dist/internal/generated/TypesDiskUsage.generated.js.map +1 -1
- package/dist/internal/platforms/undici.js +88 -59
- package/dist/internal/platforms/undici.js.map +1 -1
- package/dist/internal/schemas/id.js +1 -1
- package/dist/internal/schemas/id.js.map +1 -1
- package/package.json +1 -1
- package/src/Callbacks.ts +3 -3
- package/src/DindEngine.ts +4 -4
- package/src/DockerComposeEngine.ts +4 -4
- package/src/DockerEngine.ts +16 -7
- package/src/MobyConnection.ts +1 -1
- package/src/MobyConvey.ts +2 -2
- package/src/MobyDemux.ts +31 -7
- package/src/MobyEndpoints.ts +15 -15
- package/src/MobyPlatforms.ts +8 -8
- package/src/MobySchemas.ts +1 -1
- package/src/PodmanEngine.ts +3 -3
- package/src/Promises.ts +3 -3
- package/src/internal/demux/multiplexed.ts +9 -0
- package/src/internal/demux/raw.ts +6 -0
- package/src/internal/endpoints/auth.ts +120 -0
- package/src/internal/endpoints/containers.ts +7 -4
- package/src/internal/endpoints/execs.ts +7 -2
- package/src/internal/endpoints/images.ts +59 -24
- package/src/internal/endpoints/networks.ts +11 -5
- package/src/internal/endpoints/plugins.ts +17 -7
- package/src/internal/endpoints/services.ts +21 -6
- package/src/internal/endpoints/system.ts +1 -1
- package/src/internal/engines/dind.ts +8 -2
- package/src/internal/generated/ContainerConfig.generated.ts +1 -1
- package/src/internal/generated/ContainerContainerJSONBase.generated.ts +1 -1
- package/src/internal/generated/ContainerDefaultNetworkSettings.generated.ts +8 -8
- package/src/internal/generated/ContainerNetworkSettingsBase.generated.ts +6 -6
- package/src/internal/generated/ImageInspectResponse.generated.ts +4 -4
- package/src/internal/generated/NetworkCreateOptions.generated.ts +10 -10
- package/src/internal/generated/NetworkInspect.generated.ts +3 -3
- package/src/internal/generated/TypesDiskUsage.generated.ts +1 -1
- package/src/internal/platforms/undici.ts +121 -90
- package/src/internal/schemas/id.ts +1 -1
|
@@ -5,14 +5,14 @@ export class ContainerDefaultNetworkSettings extends Schema.Class<ContainerDefau
|
|
|
5
5
|
"ContainerDefaultNetworkSettings"
|
|
6
6
|
)(
|
|
7
7
|
{
|
|
8
|
-
EndpointID: Schema.String,
|
|
9
|
-
Gateway: Schema.String,
|
|
10
|
-
GlobalIPv6Address: Schema.String,
|
|
11
|
-
GlobalIPv6PrefixLen: EffectSchemas.Number.I64,
|
|
12
|
-
IPAddress: Schema.String,
|
|
13
|
-
IPPrefixLen: EffectSchemas.Number.I64,
|
|
14
|
-
IPv6Gateway: Schema.String,
|
|
15
|
-
MacAddress: Schema.String,
|
|
8
|
+
EndpointID: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
9
|
+
Gateway: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
10
|
+
GlobalIPv6Address: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
11
|
+
GlobalIPv6PrefixLen: Schema.optional(EffectSchemas.Number.I64), // optional for docker.io/library/docker:26-dind-rootless
|
|
12
|
+
IPAddress: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
13
|
+
IPPrefixLen: Schema.optional(EffectSchemas.Number.I64), // optional for docker.io/library/docker:26-dind-rootless
|
|
14
|
+
IPv6Gateway: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
15
|
+
MacAddress: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
identifier: "ContainerDefaultNetworkSettings",
|
|
@@ -7,15 +7,15 @@ export class ContainerNetworkSettingsBase extends Schema.Class<ContainerNetworkS
|
|
|
7
7
|
"ContainerNetworkSettingsBase"
|
|
8
8
|
)(
|
|
9
9
|
{
|
|
10
|
-
Bridge: Schema.String,
|
|
10
|
+
Bridge: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
11
11
|
SandboxID: Schema.String,
|
|
12
12
|
SandboxKey: Schema.String,
|
|
13
13
|
Ports: Schema.NullOr(PortSchemas.PortMap),
|
|
14
|
-
HairpinMode: Schema.Boolean,
|
|
15
|
-
LinkLocalIPv6Address: Schema.String,
|
|
16
|
-
LinkLocalIPv6PrefixLen: EffectSchemas.Number.I64,
|
|
17
|
-
SecondaryIPAddresses: Schema.
|
|
18
|
-
SecondaryIPv6Addresses: Schema.
|
|
14
|
+
HairpinMode: Schema.optional(Schema.Boolean), // optional for docker.io/library/docker:26-dind-rootless
|
|
15
|
+
LinkLocalIPv6Address: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
16
|
+
LinkLocalIPv6PrefixLen: Schema.optional(EffectSchemas.Number.I64), // optional for docker.io/library/docker:26-dind-rootless
|
|
17
|
+
SecondaryIPAddresses: Schema.NullishOr(Schema.Array(Schema.NullOr(NetworkAddress.NetworkAddress))), // optional for docker.io/library/docker:26-dind-rootless
|
|
18
|
+
SecondaryIPv6Addresses: Schema.NullishOr(Schema.Array(Schema.NullOr(NetworkAddress.NetworkAddress))), // optional for docker.io/library/docker:26-dind-rootless
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
identifier: "ContainerNetworkSettingsBase",
|
|
@@ -14,13 +14,13 @@ export class ImageInspectResponse extends Schema.Class<ImageInspectResponse>("Im
|
|
|
14
14
|
Id: Schema.String,
|
|
15
15
|
RepoTags: Schema.NullOr(Schema.Array(Schema.String)),
|
|
16
16
|
RepoDigests: Schema.NullOr(Schema.Array(MobyIdentifiers.Digest)),
|
|
17
|
-
Parent: Schema.String,
|
|
17
|
+
Parent: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
18
18
|
Comment: Schema.String,
|
|
19
19
|
Created: Schema.optional(Schema.String),
|
|
20
20
|
Container: Schema.optional(Schema.String),
|
|
21
21
|
ContainerConfig: Schema.optionalWith(ContainerConfig.ContainerConfig, { nullable: true }),
|
|
22
|
-
DockerVersion: Schema.String,
|
|
23
|
-
Author: Schema.String,
|
|
22
|
+
DockerVersion: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
23
|
+
Author: Schema.optional(Schema.String), // optional for docker.io/library/docker:26-dind-rootless
|
|
24
24
|
Config: Schema.NullOr(V1DockerOCIImageConfig.V1DockerOCIImageConfig),
|
|
25
25
|
Architecture: Schema.String,
|
|
26
26
|
Variant: Schema.optional(Schema.String),
|
|
@@ -28,7 +28,7 @@ export class ImageInspectResponse extends Schema.Class<ImageInspectResponse>("Im
|
|
|
28
28
|
OsVersion: Schema.optional(Schema.String),
|
|
29
29
|
Size: EffectSchemas.Number.I64,
|
|
30
30
|
VirtualSize: Schema.optional(EffectSchemas.Number.I64),
|
|
31
|
-
GraphDriver: Schema.
|
|
31
|
+
GraphDriver: Schema.NullishOr(StorageDriverData.StorageDriverData), // optional for docker.io/library/docker:26-dind-rootless
|
|
32
32
|
RootFS: Schema.NullOr(ImageRootFS.ImageRootFS),
|
|
33
33
|
Metadata: Schema.NullOr(ImageMetadata.ImageMetadata),
|
|
34
34
|
Descriptor: Schema.optionalWith(V1Descriptor.V1Descriptor, { nullable: true }),
|
|
@@ -4,18 +4,18 @@ import * as NetworkIPAM from "./NetworkIPAM.generated.js";
|
|
|
4
4
|
|
|
5
5
|
export class NetworkCreateOptions extends Schema.Class<NetworkCreateOptions>("NetworkCreateOptions")(
|
|
6
6
|
{
|
|
7
|
-
Driver: Schema.String,
|
|
8
|
-
Scope: Schema.String,
|
|
7
|
+
Driver: Schema.String.pipe(Schema.propertySignature).pipe(Schema.withConstructorDefault(() => "bridge")),
|
|
8
|
+
Scope: Schema.optionalWith(Schema.String, { nullable: true }),
|
|
9
9
|
EnableIPv4: Schema.optionalWith(Schema.Boolean, { nullable: true }),
|
|
10
10
|
EnableIPv6: Schema.optionalWith(Schema.Boolean, { nullable: true }),
|
|
11
|
-
IPAM: Schema.
|
|
12
|
-
Internal: Schema.Boolean,
|
|
13
|
-
Attachable: Schema.Boolean,
|
|
14
|
-
Ingress: Schema.Boolean,
|
|
15
|
-
ConfigOnly: Schema.Boolean,
|
|
16
|
-
ConfigFrom: Schema.
|
|
17
|
-
Options: Schema.
|
|
18
|
-
Labels: Schema.
|
|
11
|
+
IPAM: Schema.optionalWith(NetworkIPAM.NetworkIPAM, { nullable: true }),
|
|
12
|
+
Internal: Schema.optionalWith(Schema.Boolean, { nullable: true }),
|
|
13
|
+
Attachable: Schema.optionalWith(Schema.Boolean, { nullable: true }),
|
|
14
|
+
Ingress: Schema.optionalWith(Schema.Boolean, { nullable: true }),
|
|
15
|
+
ConfigOnly: Schema.Boolean.pipe(Schema.propertySignature).pipe(Schema.withConstructorDefault(() => false)),
|
|
16
|
+
ConfigFrom: Schema.optionalWith(NetworkConfigReference.NetworkConfigReference, { nullable: true }),
|
|
17
|
+
Options: Schema.optionalWith(Schema.Record({ key: Schema.String, value: Schema.String }), { nullable: true }),
|
|
18
|
+
Labels: Schema.optionalWith(Schema.Record({ key: Schema.String, value: Schema.String }), { nullable: true }),
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
identifier: "NetworkCreateOptions",
|
|
@@ -12,7 +12,7 @@ export class NetworkInspect extends Schema.Class<NetworkInspect>("NetworkInspect
|
|
|
12
12
|
Created: Schema.NullOr(Schema.DateFromString),
|
|
13
13
|
Scope: Schema.String,
|
|
14
14
|
Driver: Schema.String,
|
|
15
|
-
EnableIPv4: Schema.Boolean,
|
|
15
|
+
EnableIPv4: Schema.optional(Schema.Boolean), // optional for docker.io/library/docker:27-dind-rootless
|
|
16
16
|
EnableIPv6: Schema.Boolean,
|
|
17
17
|
IPAM: Schema.NullOr(NetworkIPAM.NetworkIPAM),
|
|
18
18
|
Internal: Schema.Boolean,
|
|
@@ -20,8 +20,8 @@ export class NetworkInspect extends Schema.Class<NetworkInspect>("NetworkInspect
|
|
|
20
20
|
Ingress: Schema.Boolean,
|
|
21
21
|
ConfigFrom: Schema.NullOr(NetworkConfigReference.NetworkConfigReference),
|
|
22
22
|
ConfigOnly: Schema.Boolean,
|
|
23
|
-
Containers: Schema.
|
|
24
|
-
Schema.Record({ key: Schema.String, value: Schema.NullOr(NetworkEndpointResource.NetworkEndpointResource) })
|
|
23
|
+
Containers: Schema.NullishOr(
|
|
24
|
+
Schema.Record({ key: Schema.String, value: Schema.NullOr(NetworkEndpointResource.NetworkEndpointResource) }) // optional for docker.io/library/docker:26-dind-rootless
|
|
25
25
|
),
|
|
26
26
|
Options: Schema.NullOr(Schema.Record({ key: Schema.String, value: Schema.String })),
|
|
27
27
|
Labels: Schema.NullOr(Schema.Record({ key: Schema.String, value: Schema.String })),
|
|
@@ -7,7 +7,7 @@ import * as VolumeVolume from "./VolumeVolume.generated.js";
|
|
|
7
7
|
|
|
8
8
|
export class TypesDiskUsage extends Schema.Class<TypesDiskUsage>("TypesDiskUsage")(
|
|
9
9
|
{
|
|
10
|
-
LayersSize: EffectSchemas.Number.I64,
|
|
10
|
+
LayersSize: Schema.optional(EffectSchemas.Number.I64), // optional for docker.io/library/docker:26-dind-rootless
|
|
11
11
|
Images: Schema.NullOr(Schema.Array(Schema.NullOr(ImageSummary.ImageSummary))),
|
|
12
12
|
Containers: Schema.NullOr(Schema.Array(Schema.NullOr(ContainerSummary.ContainerSummary))),
|
|
13
13
|
Volumes: Schema.NullOr(Schema.Array(Schema.NullOr(VolumeVolume.VolumeVolume))),
|
|
@@ -13,104 +13,135 @@ import * as internalAgnostic from "./agnostic.js";
|
|
|
13
13
|
import * as internalConnection from "./connection.js";
|
|
14
14
|
|
|
15
15
|
/** @internal */
|
|
16
|
-
export const
|
|
16
|
+
export const makeDispatcher: (
|
|
17
|
+
agentOptions?: undici.Agent.Options | undefined
|
|
18
|
+
) => Effect.Effect<undici.Agent, never, Scope.Scope> = Effect.fnUntraced(function* (
|
|
19
|
+
agentOptions?: undici.Agent.Options | undefined
|
|
20
|
+
) {
|
|
21
|
+
const undiciLazy = yield* Effect.promise(() => import("undici"));
|
|
22
|
+
const acquire = Effect.sync(() => new undiciLazy.Agent(agentOptions));
|
|
23
|
+
const release = (agent: undici.Dispatcher) => Effect.promise(() => agent.destroy());
|
|
24
|
+
const resource = Effect.acquireRelease(acquire, release);
|
|
25
|
+
return yield* resource;
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/** @internal */
|
|
29
|
+
export const makeSshDispatcher: (
|
|
17
30
|
connectionOptions: MobyConnection.SshConnectionOptions
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
) => Effect.Effect<undici.Agent, never, Scope.Scope> = Effect.fnUntraced(function* (
|
|
32
|
+
connectionOptions: MobyConnection.SshConnectionOptions
|
|
33
|
+
) {
|
|
34
|
+
const ssh2Lazy = yield* Effect.promise(() => import("ssh2"));
|
|
35
|
+
const undiciLazy = yield* Effect.promise(() => import("undici"));
|
|
36
|
+
const sshClient = new ssh2Lazy.Client();
|
|
37
|
+
|
|
38
|
+
let sshConnection: "unopened" | "connecting" | "open-failed" | "ready" = "unopened";
|
|
39
|
+
let openFailedError: Error | null = null;
|
|
40
|
+
|
|
41
|
+
const connector: undici.buildConnector.connector = (
|
|
42
|
+
_options: undici.buildConnector.Options,
|
|
43
|
+
callback: undici.buildConnector.Callback
|
|
44
|
+
) => {
|
|
45
|
+
const onError = (error: Error): void => callback(error, null);
|
|
46
|
+
|
|
47
|
+
// No connection yet, start connecting
|
|
48
|
+
if (sshConnection === "unopened") {
|
|
49
|
+
sshConnection = "connecting";
|
|
50
|
+
const unableToOpen = (error: Error & ssh2.ClientErrorExtensions) => {
|
|
51
|
+
sshConnection = "open-failed";
|
|
52
|
+
openFailedError = error;
|
|
53
|
+
onError(error);
|
|
54
|
+
};
|
|
55
|
+
sshClient
|
|
56
|
+
.once("ready", () => {
|
|
57
|
+
sshConnection = "ready";
|
|
58
|
+
sshClient.off("error", unableToOpen);
|
|
59
|
+
connector(_options, callback);
|
|
28
60
|
})
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
.once("error", unableToOpen)
|
|
62
|
+
.connect(connectionOptions);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Already tried to connect but failed
|
|
66
|
+
else if (sshConnection === "open-failed") {
|
|
67
|
+
callback(openFailedError!, null);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Another connection attempt is already in progress, wait for it
|
|
71
|
+
else if (sshConnection === "connecting") {
|
|
72
|
+
sshClient
|
|
73
|
+
.once("ready", () => {
|
|
74
|
+
sshClient.off("error", onError);
|
|
75
|
+
connector(_options, callback);
|
|
76
|
+
})
|
|
77
|
+
.once("error", onError);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// We are connected to the ssh server, now forward our stream local
|
|
81
|
+
else if (sshConnection === "ready") {
|
|
82
|
+
sshClient
|
|
83
|
+
.openssh_forwardOutStreamLocal(
|
|
84
|
+
connectionOptions.remoteSocketPath,
|
|
85
|
+
(error: Error | undefined, stream: ssh2.ClientChannel) => {
|
|
86
|
+
sshClient.off("error", onError);
|
|
87
|
+
if (error) return callback(error, null);
|
|
88
|
+
else return callback(null, stream as unknown as net.Socket);
|
|
53
89
|
}
|
|
90
|
+
)
|
|
91
|
+
.once("error", onError);
|
|
92
|
+
}
|
|
54
93
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
94
|
+
// Should never happen
|
|
95
|
+
else {
|
|
96
|
+
return Function.absurd<undefined>(sshConnection);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
59
99
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
100
|
+
const acquire = Effect.sync(() => new undiciLazy.Agent({ connect: connector }));
|
|
101
|
+
const release = (_agent: undici.Dispatcher) =>
|
|
102
|
+
Effect.promise(async () => {
|
|
103
|
+
sshClient.end();
|
|
104
|
+
sshClient.destroy();
|
|
105
|
+
// await agent.close();
|
|
106
|
+
// await agent.destroy();
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
const resource = Effect.acquireRelease(acquire, release);
|
|
110
|
+
return yield* resource;
|
|
111
|
+
});
|
|
66
112
|
|
|
67
113
|
/** @internal */
|
|
68
|
-
export const getUndiciDispatcher
|
|
114
|
+
export const getUndiciDispatcher: (
|
|
69
115
|
connectionOptions: MobyConnection.MobyConnectionOptions
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
})
|
|
100
|
-
),
|
|
101
|
-
ssh: (options) =>
|
|
102
|
-
Effect.map(
|
|
103
|
-
makeUndiciSshConnector(options),
|
|
104
|
-
(connector) => new undiciLazy.Agent({ connect: connector })
|
|
105
|
-
),
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
const releaseUndiciDispatcher = (dispatcher: undici.Dispatcher) =>
|
|
109
|
-
Effect.promise(() => dispatcher.destroy());
|
|
110
|
-
|
|
111
|
-
return Effect.acquireRelease(AcquireUndiciDispatcher(connectionOptions), releaseUndiciDispatcher);
|
|
112
|
-
}
|
|
113
|
-
);
|
|
116
|
+
) => Effect.Effect<undici.Dispatcher, never, Scope.Scope> = internalConnection.MobyConnectionOptions.$match({
|
|
117
|
+
ssh: (options) => makeSshDispatcher(options),
|
|
118
|
+
socket: (options) =>
|
|
119
|
+
makeDispatcher({
|
|
120
|
+
connect: {
|
|
121
|
+
socketPath: options.socketPath,
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
http: (options) =>
|
|
125
|
+
makeDispatcher({
|
|
126
|
+
connect: {
|
|
127
|
+
host: options.host,
|
|
128
|
+
port: options.port,
|
|
129
|
+
path: options.path,
|
|
130
|
+
},
|
|
131
|
+
}),
|
|
132
|
+
https: (options) =>
|
|
133
|
+
makeDispatcher({
|
|
134
|
+
connect: {
|
|
135
|
+
ca: options.ca,
|
|
136
|
+
key: options.key,
|
|
137
|
+
cert: options.cert,
|
|
138
|
+
passphrase: options.passphrase,
|
|
139
|
+
host: options.host,
|
|
140
|
+
port: options.port,
|
|
141
|
+
path: options.path,
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
});
|
|
114
145
|
|
|
115
146
|
/** @internal */
|
|
116
147
|
export const getUndiciWebsocketConstructor = (
|
|
@@ -145,7 +145,7 @@ export type VolumeIdentifier = Schema.Schema.Type<typeof VolumeIdentifier>;
|
|
|
145
145
|
*/
|
|
146
146
|
export const Digest = Function.pipe(
|
|
147
147
|
Schema.String,
|
|
148
|
-
Schema.pattern(/^[a-z0-9]+(?:[
|
|
148
|
+
Schema.pattern(/^[a-z0-9]+(?:[@.+_-][a-z0-9]+)*:[a-zA-Z0-9=_-]+$/),
|
|
149
149
|
Schema.brand("Digest")
|
|
150
150
|
);
|
|
151
151
|
|