the-moby-effect 1.43.0-alpha.0 → 1.43.0-alpha.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/README.md +2 -1
- package/dist/src/agent-helpers.d.ts +9 -7
- package/dist/src/agent-helpers.js +5 -1
- package/dist/src/agent-helpers.js.map +1 -1
- package/dist/src/index.d.ts +31 -1
- package/dist/src/index.js +74 -1
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@ Moby API client built using [effect-ts](http://effect.website). If you want docu
|
|
|
7
7
|
- [x] - local unix socket connections
|
|
8
8
|
- [x] - http and https connections
|
|
9
9
|
- [x] - ssh connections
|
|
10
|
+
- [x] - `DOCKER_HOST` environment variable support
|
|
10
11
|
- [x] - streaming (just like [dockerode](https://github.com/apocas/dockerode), streams are passed directly through to you)
|
|
11
12
|
- [x] - tests, examples, and in-line JSDoc comments based on the moby api documentation
|
|
12
13
|
- [x] - Strong focus on types and typescript support
|
|
@@ -21,7 +22,7 @@ Moby API client built using [effect-ts](http://effect.website). If you want docu
|
|
|
21
22
|
## Todo/Future
|
|
22
23
|
- Add more examples
|
|
23
24
|
- Maybe add tests against something else other than docker like podman?
|
|
24
|
-
- Patch upstream @effect/platform-node to support just streaming responses, needed for session and container attach endpoints: [upstream pr](https://github.com/Effect-TS/
|
|
25
|
+
- Patch upstream @effect/platform-node to support just streaming responses, needed for session and container attach endpoints: [upstream pr](https://github.com/Effect-TS/effect/pull/1796)
|
|
25
26
|
|
|
26
27
|
## Compatibility
|
|
27
28
|
|
|
@@ -9,20 +9,22 @@ import { Context, Effect, Layer, Scope } from "effect";
|
|
|
9
9
|
export type MobyConnectionOptions = {
|
|
10
10
|
connection: "unix";
|
|
11
11
|
socketPath: string;
|
|
12
|
-
} | {
|
|
13
|
-
connection: "http";
|
|
14
|
-
host: string;
|
|
15
|
-
port: number;
|
|
16
12
|
} | ({
|
|
17
13
|
connection: "ssh";
|
|
18
14
|
remoteSocketPath: string;
|
|
19
15
|
} & ssh2.ConnectConfig) | {
|
|
16
|
+
connection: "http";
|
|
17
|
+
host: string;
|
|
18
|
+
port: number;
|
|
19
|
+
path?: string | undefined;
|
|
20
|
+
} | {
|
|
20
21
|
connection: "https";
|
|
21
22
|
host: string;
|
|
22
23
|
port: number;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
path?: string | undefined;
|
|
25
|
+
cert?: string | undefined;
|
|
26
|
+
ca?: string | undefined;
|
|
27
|
+
key?: string | undefined;
|
|
26
28
|
passphrase?: string | undefined;
|
|
27
29
|
};
|
|
28
30
|
/**
|
|
@@ -78,7 +78,11 @@ export const getAgent = (connectionOptions) => Effect.map(Effect.acquireRelease(
|
|
|
78
78
|
http: agent,
|
|
79
79
|
https: agent,
|
|
80
80
|
connectionOptions: connectionOptions,
|
|
81
|
-
nodeRequestUrl: connectionOptions.connection === "https"
|
|
81
|
+
nodeRequestUrl: connectionOptions.connection === "https"
|
|
82
|
+
? `https://0.0.0.0${connectionOptions.path ?? ""}`
|
|
83
|
+
: connectionOptions.connection === "http"
|
|
84
|
+
? `http://0.0.0.0${connectionOptions.path ?? ""}`
|
|
85
|
+
: "http://0.0.0.0",
|
|
82
86
|
[NodeHttp.nodeClient.HttpAgentTypeId]: NodeHttp.nodeClient.HttpAgentTypeId,
|
|
83
87
|
}));
|
|
84
88
|
//# sourceMappingURL=agent-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-helpers.js","sourceRoot":"","sources":["../../src/agent-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAS,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-helpers.js","sourceRoot":"","sources":["../../src/agent-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Layer, Scope } from "effect";
|
|
1
|
+
import { ConfigError, Effect, Layer, Scope } from "effect";
|
|
2
2
|
import * as AgentHelpers from "./agent-helpers.js";
|
|
3
3
|
import * as Configs from "./configs.js";
|
|
4
4
|
import * as Containers from "./containers.js";
|
|
@@ -34,5 +34,35 @@ export * as System from "./system.js";
|
|
|
34
34
|
export * as Tasks from "./tasks.js";
|
|
35
35
|
export * as Volumes from "./volumes.js";
|
|
36
36
|
export type MobyApi = Layer.Layer<never, never, Configs.Configs | Containers.Containers | Distributions.Distributions | Execs.Execs | Images.Images | Networks.Networks | Nodes.Nodes | Plugins.Plugins | Secrets.Secrets | Services.Services | Sessions.Sessions | Swarm.Swarms | System.Systems | Tasks.Tasks | Volumes.Volumes>;
|
|
37
|
+
/** Creates a MobyApi layer from the provided connection agent */
|
|
37
38
|
export declare const fromAgent: (agent: Effect.Effect<Scope.Scope, never, AgentHelpers.IMobyConnectionAgent>) => MobyApi;
|
|
39
|
+
/** Creates a MobyApi layer from the provided connection options */
|
|
38
40
|
export declare const fromConnectionOptions: (connectionOptions: AgentHelpers.MobyConnectionOptions) => MobyApi;
|
|
41
|
+
/**
|
|
42
|
+
* From
|
|
43
|
+
* https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option
|
|
44
|
+
*
|
|
45
|
+
* "The Docker client will honor the DOCKER_HOST environment variable to set the
|
|
46
|
+
* -H flag for the client"
|
|
47
|
+
*
|
|
48
|
+
* And then from
|
|
49
|
+
* https://docs.docker.com/engine/reference/commandline/dockerd/#bind-docker-to-another-hostport-or-a-unix-socket
|
|
50
|
+
*
|
|
51
|
+
* "-H accepts host and port assignment in the following format:
|
|
52
|
+
* `tcp://[host]:[port][path]` or `unix://path`
|
|
53
|
+
*
|
|
54
|
+
* For example:
|
|
55
|
+
*
|
|
56
|
+
* - `unix://path/to/socket` -> Unix socket located at path/to/socket
|
|
57
|
+
* - When -H is empty, it will default to the same value as when no -H was passed
|
|
58
|
+
* in
|
|
59
|
+
* - `http://host:port/path` -> HTTP connection on host:port and prepend path to
|
|
60
|
+
* all requests
|
|
61
|
+
* - `https://host:port/path` -> HTTPS connection on host:port and prepend path to
|
|
62
|
+
* all requests
|
|
63
|
+
* - `ssh://me@example.com:22/var/run/docker.sock` -> SSH connection to
|
|
64
|
+
* example.com on port 22
|
|
65
|
+
*/
|
|
66
|
+
export declare const fromUrl: (dockerHost: string) => Layer.Layer<Layer.Layer.Context<MobyApi> | never, Layer.Layer.Error<MobyApi> | ConfigError.ConfigError, Layer.Layer.Success<MobyApi>>;
|
|
67
|
+
/** Creates a MobyApi layer from the DOCKER_HOST environment variable as a url */
|
|
68
|
+
export declare const fromDockerHostEnvironmentVariable: Layer.Layer<Layer.Layer.Context<MobyApi>, Layer.Layer.Error<MobyApi> | ConfigError.ConfigError, Layer.Layer.Success<MobyApi>>;
|
package/dist/src/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Layer } from "effect";
|
|
1
|
+
import { Config, ConfigError, Effect, Layer, Secret } from "effect";
|
|
2
2
|
import * as AgentHelpers from "./agent-helpers.js";
|
|
3
3
|
import * as Configs from "./configs.js";
|
|
4
4
|
import * as Containers from "./containers.js";
|
|
@@ -33,6 +33,79 @@ export * as System from "./system.js";
|
|
|
33
33
|
export * as Tasks from "./tasks.js";
|
|
34
34
|
export * as Volumes from "./volumes.js";
|
|
35
35
|
const layer = Layer.mergeAll(Configs.layer, Containers.layer, Distributions.layer, Execs.layer, Images.layer, Networks.layer, Nodes.layer, Plugins.layer, Secrets.layer, Services.layer, Sessions.layer, Swarm.layer, System.layer, Tasks.layer, Volumes.layer);
|
|
36
|
+
/** Creates a MobyApi layer from the provided connection agent */
|
|
36
37
|
export const fromAgent = (agent) => layer.pipe(Layer.provide(Layer.scoped(AgentHelpers.MobyConnectionAgent, agent)));
|
|
38
|
+
/** Creates a MobyApi layer from the provided connection options */
|
|
37
39
|
export const fromConnectionOptions = (connectionOptions) => fromAgent(AgentHelpers.getAgent(connectionOptions));
|
|
40
|
+
/**
|
|
41
|
+
* From
|
|
42
|
+
* https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option
|
|
43
|
+
*
|
|
44
|
+
* "The Docker client will honor the DOCKER_HOST environment variable to set the
|
|
45
|
+
* -H flag for the client"
|
|
46
|
+
*
|
|
47
|
+
* And then from
|
|
48
|
+
* https://docs.docker.com/engine/reference/commandline/dockerd/#bind-docker-to-another-hostport-or-a-unix-socket
|
|
49
|
+
*
|
|
50
|
+
* "-H accepts host and port assignment in the following format:
|
|
51
|
+
* `tcp://[host]:[port][path]` or `unix://path`
|
|
52
|
+
*
|
|
53
|
+
* For example:
|
|
54
|
+
*
|
|
55
|
+
* - `unix://path/to/socket` -> Unix socket located at path/to/socket
|
|
56
|
+
* - When -H is empty, it will default to the same value as when no -H was passed
|
|
57
|
+
* in
|
|
58
|
+
* - `http://host:port/path` -> HTTP connection on host:port and prepend path to
|
|
59
|
+
* all requests
|
|
60
|
+
* - `https://host:port/path` -> HTTPS connection on host:port and prepend path to
|
|
61
|
+
* all requests
|
|
62
|
+
* - `ssh://me@example.com:22/var/run/docker.sock` -> SSH connection to
|
|
63
|
+
* example.com on port 22
|
|
64
|
+
*/
|
|
65
|
+
export const fromUrl = (dockerHost) => {
|
|
66
|
+
const url = new URL(dockerHost);
|
|
67
|
+
if (url.protocol === "unix") {
|
|
68
|
+
return fromConnectionOptions({ connection: "unix", socketPath: url.pathname });
|
|
69
|
+
}
|
|
70
|
+
if (url.protocol === "ssh") {
|
|
71
|
+
return fromConnectionOptions({
|
|
72
|
+
connection: "ssh",
|
|
73
|
+
host: url.hostname,
|
|
74
|
+
username: url.username,
|
|
75
|
+
password: url.password,
|
|
76
|
+
remoteSocketPath: url.pathname,
|
|
77
|
+
port: url.port ? Number.parseInt(url.port) : 22,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (url.protocol === "http") {
|
|
81
|
+
return fromConnectionOptions({
|
|
82
|
+
connection: "http",
|
|
83
|
+
host: url.hostname ?? "127.0.0.1",
|
|
84
|
+
port: url.port ? Number.parseInt(url.port) : 2375,
|
|
85
|
+
path: url.pathname,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
if (url.protocol === "https") {
|
|
89
|
+
return fromConnectionOptions({
|
|
90
|
+
connection: "https",
|
|
91
|
+
host: url.hostname ?? "127.0.0.1",
|
|
92
|
+
port: url.port ? Number.parseInt(url.port) : 2376,
|
|
93
|
+
path: url.pathname,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (url.protocol === "tcp") {
|
|
97
|
+
const path = url.pathname;
|
|
98
|
+
const host = url.hostname ?? "127.0.0.0.1";
|
|
99
|
+
const port = url.port ? Number.parseInt(url.port) : 2375;
|
|
100
|
+
return fromConnectionOptions({ connection: port === 2376 ? "https" : "http", host, port, path });
|
|
101
|
+
}
|
|
102
|
+
// Any other protocols are not supported
|
|
103
|
+
return Layer.fail(ConfigError.InvalidData([""], `Unsupported protocol ${url.protocol}`));
|
|
104
|
+
};
|
|
105
|
+
/** Creates a MobyApi layer from the DOCKER_HOST environment variable as a url */
|
|
106
|
+
export const fromDockerHostEnvironmentVariable = Config.secret("DOCKER_HOST")
|
|
107
|
+
.pipe(Config.withDefault(Secret.fromString("unix:///var/run/docker.sock")))
|
|
108
|
+
.pipe(Config.map(Secret.value))
|
|
109
|
+
.pipe(Effect.map(fromUrl))
|
|
110
|
+
.pipe(Layer.unwrapEffect);
|
|
38
111
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|