the-moby-effect 1.43.0-alpha.0
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/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/src/agent-helpers.d.ts +59 -0
- package/dist/src/agent-helpers.js +84 -0
- package/dist/src/agent-helpers.js.map +1 -0
- package/dist/src/configs.d.ts +105 -0
- package/dist/src/configs.js +29 -0
- package/dist/src/configs.js.map +1 -0
- package/dist/src/containers.d.ts +611 -0
- package/dist/src/containers.js +82 -0
- package/dist/src/containers.js.map +1 -0
- package/dist/src/custom-helpers.d.ts +23 -0
- package/dist/src/custom-helpers.js +41 -0
- package/dist/src/custom-helpers.js.map +1 -0
- package/dist/src/distribution.d.ts +28 -0
- package/dist/src/distribution.js +21 -0
- package/dist/src/distribution.js.map +1 -0
- package/dist/src/execs.d.ts +69 -0
- package/dist/src/execs.js +26 -0
- package/dist/src/execs.js.map +1 -0
- package/dist/src/images.d.ts +657 -0
- package/dist/src/images.js +61 -0
- package/dist/src/images.js.map +1 -0
- package/dist/src/index.d.ts +38 -0
- package/dist/src/index.js +38 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/networks.d.ts +151 -0
- package/dist/src/networks.js +40 -0
- package/dist/src/networks.js.map +1 -0
- package/dist/src/nodes.d.ts +99 -0
- package/dist/src/nodes.js +27 -0
- package/dist/src/nodes.js.map +1 -0
- package/dist/src/plugins.d.ts +253 -0
- package/dist/src/plugins.js +47 -0
- package/dist/src/plugins.js.map +1 -0
- package/dist/src/request-helpers.d.ts +6 -0
- package/dist/src/request-helpers.js +15 -0
- package/dist/src/request-helpers.js.map +1 -0
- package/dist/src/schemas.d.ts +7279 -0
- package/dist/src/schemas.js +3772 -0
- package/dist/src/schemas.js.map +1 -0
- package/dist/src/secrets.d.ts +100 -0
- package/dist/src/secrets.js +29 -0
- package/dist/src/secrets.js.map +1 -0
- package/dist/src/services.d.ts +185 -0
- package/dist/src/services.js +32 -0
- package/dist/src/services.js.map +1 -0
- package/dist/src/session.d.ts +29 -0
- package/dist/src/session.js +20 -0
- package/dist/src/session.js.map +1 -0
- package/dist/src/swarm.d.ts +80 -0
- package/dist/src/swarm.js +39 -0
- package/dist/src/swarm.js.map +1 -0
- package/dist/src/system.d.ts +100 -0
- package/dist/src/system.js +40 -0
- package/dist/src/system.js.map +1 -0
- package/dist/src/tasks.d.ts +102 -0
- package/dist/src/tasks.js +26 -0
- package/dist/src/tasks.js.map +1 -0
- package/dist/src/volumes.d.ts +143 -0
- package/dist/src/volumes.js +29 -0
- package/dist/src/volumes.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as NodeSocket from "@effect/experimental/Socket/Node";
|
|
2
|
+
import * as NodeHttp from "@effect/platform-node/HttpClient";
|
|
3
|
+
import * as Schema from "@effect/schema/Schema";
|
|
4
|
+
import { Context, Data, Effect, Layer, Stream, pipe } from "effect";
|
|
5
|
+
import { MobyConnectionAgent, MobyHttpClientLive, getAgent, } from "./agent-helpers.js";
|
|
6
|
+
import { addQueryParameter, responseErrorHandler, streamErrorHandler } from "./request-helpers.js";
|
|
7
|
+
import { ContainerCreateResponse, ContainerCreateSpec, ContainerInspectResponse, ContainerPruneResponse, ContainerSummary, ContainerUpdateResponse, ContainerUpdateSpec, ContainerWaitResponse, FilesystemChange, } from "./schemas.js";
|
|
8
|
+
export class ContainersError extends Data.TaggedError("ContainersError") {
|
|
9
|
+
}
|
|
10
|
+
const make = Effect.gen(function* (_) {
|
|
11
|
+
const agent = yield* _(MobyConnectionAgent);
|
|
12
|
+
const defaultClient = yield* _(NodeHttp.client.Client);
|
|
13
|
+
const client = defaultClient.pipe(NodeHttp.client.mapRequest(NodeHttp.request.prependUrl(`${agent.nodeRequestUrl}/containers`)), NodeHttp.client.filterStatusOk);
|
|
14
|
+
const voidClient = client.pipe(NodeHttp.client.transform(Effect.asUnit));
|
|
15
|
+
const unknownClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(Schema.unknown)));
|
|
16
|
+
const ContainerSummariesClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(Schema.array(ContainerSummary))));
|
|
17
|
+
const ContainerCreateResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(ContainerCreateResponse)));
|
|
18
|
+
const ContainerInspectResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(ContainerInspectResponse)));
|
|
19
|
+
const FilesystemChangesClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(Schema.nullable(Schema.array(FilesystemChange)))));
|
|
20
|
+
const ContainerUpdateResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(ContainerUpdateResponse)));
|
|
21
|
+
const ContainerWaitResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(ContainerWaitResponse)));
|
|
22
|
+
const ContainerPruneResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(ContainerPruneResponse)));
|
|
23
|
+
const streamHandler = (method) => streamErrorHandler((message) => new ContainersError({ method, message }));
|
|
24
|
+
const responseHandler = (method) => responseErrorHandler((message) => new ContainersError({ method, message }));
|
|
25
|
+
const list_ = (options) => pipe(NodeHttp.request.get("/json"), addQueryParameter("all", options?.all), addQueryParameter("limit", options?.limit), addQueryParameter("size", options?.size), addQueryParameter("filters", JSON.stringify(options?.filters)), ContainerSummariesClient, Effect.catchAll(responseHandler("list")));
|
|
26
|
+
const create_ = (options) => pipe(NodeHttp.request.post("/create"), addQueryParameter("name", options.name), addQueryParameter("platform", options.platform), NodeHttp.request.schemaBody(ContainerCreateSpec)(Schema.parseSync(ContainerCreateSpec)(options.spec)), Effect.flatMap(ContainerCreateResponseClient), Effect.catchAll(responseHandler("create")));
|
|
27
|
+
const inspect_ = (options) => pipe(NodeHttp.request.get("/{id}/json".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("size", options.size), ContainerInspectResponseClient, Effect.catchAll(responseHandler("inspect")));
|
|
28
|
+
const top_ = (options) => pipe(NodeHttp.request.get("/{id}/top".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("ps_args", options.ps_args), unknownClient, Effect.catchAll(responseHandler("top")));
|
|
29
|
+
const logs_ = (options) => pipe(NodeHttp.request.get("/{id}/logs".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("follow", options.follow), addQueryParameter("stdout", options.stdout), addQueryParameter("stderr", options.stderr), addQueryParameter("since", options.since), addQueryParameter("until", options.until), addQueryParameter("timestamps", options.timestamps), addQueryParameter("tail", options.tail), client, Effect.map((response) => response.stream), Effect.map(Stream.decodeText("utf8")), Effect.map(Stream.catchAll(streamHandler("logs"))), Effect.catchAll(responseHandler("logs")));
|
|
30
|
+
const changes_ = (options) => pipe(NodeHttp.request.get("/{id}/changes".replace("{id}", encodeURIComponent(options.id))), FilesystemChangesClient, Effect.map((response) => response ?? []), Effect.catchAll(responseHandler("changes")));
|
|
31
|
+
const export_ = (options) => pipe(NodeHttp.request.get("/{id}/export".replace("{id}", encodeURIComponent(options.id))), client, Effect.map((response) => response.stream), Effect.map(Stream.catchAll(streamHandler("export"))), Effect.catchAll(responseHandler("export")));
|
|
32
|
+
const stats_ = (options) => pipe(NodeHttp.request.get("/{id}/stats".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("stream", options.stream), addQueryParameter("one-shot", options["one-shot"]), client, Effect.map((response) => response.stream), Effect.map(Stream.decodeText("utf8")), Effect.map(Stream.catchAll(streamHandler("stats"))), Effect.catchAll(responseHandler("stats")));
|
|
33
|
+
const resize_ = (options) => pipe(NodeHttp.request.post("/{id}/resize".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("h", options.h), addQueryParameter("w", options.w), voidClient, Effect.catchAll(responseHandler("resize")));
|
|
34
|
+
const start_ = (options) => pipe(NodeHttp.request.post("/{id}/start".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("detachKeys", options.detachKeys), voidClient, Effect.catchAll(responseHandler("start")));
|
|
35
|
+
const stop_ = (options) => pipe(NodeHttp.request.post("/{id}/stop".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("signal", options.signal), addQueryParameter("t", options.t), voidClient, Effect.catchAll(responseHandler("stop")));
|
|
36
|
+
const restart_ = (options) => pipe(NodeHttp.request.post("/{id}/restart".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("signal", options.signal), addQueryParameter("t", options.t), voidClient, Effect.catchAll(responseHandler("restart")));
|
|
37
|
+
const kill_ = (options) => pipe(NodeHttp.request.post("/{id}/kill".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("signal", options.signal), voidClient, Effect.catchAll(responseHandler("kill")));
|
|
38
|
+
const update_ = (options) => pipe(NodeHttp.request.post("/{id}/update".replace("{id}", encodeURIComponent(options.id))), NodeHttp.request.schemaBody(ContainerUpdateSpec)(new ContainerUpdateSpec(options.spec)), Effect.flatMap(ContainerUpdateResponseClient), Effect.catchAll(responseHandler("update")));
|
|
39
|
+
const rename_ = (options) => pipe(NodeHttp.request.post("/{id}/rename".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("name", options.name), voidClient, Effect.catchAll(responseHandler("rename")));
|
|
40
|
+
const pause_ = (options) => pipe(NodeHttp.request.post("/{id}/pause".replace("{id}", encodeURIComponent(options.id))), voidClient, Effect.catchAll(responseHandler("pause")));
|
|
41
|
+
const unpause_ = (options) => pipe(NodeHttp.request.post("/{id}/unpause".replace("{id}", encodeURIComponent(options.id))), voidClient, Effect.catchAll(responseHandler("unpause")));
|
|
42
|
+
const attach_ = (options) => pipe(NodeHttp.request.post("/{id}/attach".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("detachKeys", options.detachKeys), addQueryParameter("logs", options.logs), addQueryParameter("stream", options.stream), addQueryParameter("stdin", options.stdin), addQueryParameter("stdout", options.stdout), addQueryParameter("stderr", options.stderr), client, Effect.map((response) => response.source.socket), Effect.flatMap((socket) => NodeSocket.fromNetSocket(Effect.sync(() => socket))), Effect.catchAll(responseHandler("attach")));
|
|
43
|
+
const attachWebsocket_ = (options) => pipe(NodeHttp.request.get("/{id}/attach/ws".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("detachKeys", options.detachKeys), addQueryParameter("logs", options.logs), addQueryParameter("stream", options.stream), addQueryParameter("stdin", options.stdin), addQueryParameter("stdout", options.stdout), addQueryParameter("stderr", options.stderr), voidClient, Effect.catchAll(responseHandler("attachWebsocket")));
|
|
44
|
+
const wait_ = (options) => pipe(NodeHttp.request.post("/{id}/wait".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("condition", options.condition), ContainerWaitResponseClient, Effect.catchAll(responseHandler("wait")));
|
|
45
|
+
const delete_ = (options) => pipe(NodeHttp.request.del("/{id}".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("v", options.v), addQueryParameter("force", options.force), addQueryParameter("link", options.link), voidClient, Effect.catchAll(responseHandler("delete")));
|
|
46
|
+
const archive_ = (options) => pipe(NodeHttp.request.get("/{id}/archive".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("path", options.path), client, Effect.map((response) => response.stream), Effect.map(Stream.catchAll(streamHandler("archive"))), Effect.catchAll(responseHandler("archive")));
|
|
47
|
+
const archiveInfo_ = (options) => pipe(NodeHttp.request.head("/{id}/archive".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("path", options.path), voidClient, Effect.catchAll(responseHandler("archiveInfo")));
|
|
48
|
+
const putArchive_ = (options) => pipe(NodeHttp.request.put("/{id}/archive".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("path", options.path), addQueryParameter("noOverwriteDirNonDir", options.noOverwriteDirNonDir), addQueryParameter("copyUIDGID", options.copyUIDGID), NodeHttp.request.streamBody(options.stream), voidClient, Effect.catchAll(responseHandler("putArchive")));
|
|
49
|
+
const prune_ = (options) => pipe(NodeHttp.request.post("/prune"), addQueryParameter("filters", options?.filters), ContainerPruneResponseClient, Effect.catchAll(responseHandler("prune")));
|
|
50
|
+
return {
|
|
51
|
+
list: list_,
|
|
52
|
+
create: create_,
|
|
53
|
+
inspect: inspect_,
|
|
54
|
+
top: top_,
|
|
55
|
+
logs: logs_,
|
|
56
|
+
changes: changes_,
|
|
57
|
+
export: export_,
|
|
58
|
+
stats: stats_,
|
|
59
|
+
resize: resize_,
|
|
60
|
+
start: start_,
|
|
61
|
+
stop: stop_,
|
|
62
|
+
restart: restart_,
|
|
63
|
+
kill: kill_,
|
|
64
|
+
update: update_,
|
|
65
|
+
rename: rename_,
|
|
66
|
+
pause: pause_,
|
|
67
|
+
unpause: unpause_,
|
|
68
|
+
attach: attach_,
|
|
69
|
+
attachWebsocket: attachWebsocket_,
|
|
70
|
+
wait: wait_,
|
|
71
|
+
delete: delete_,
|
|
72
|
+
archive: archive_,
|
|
73
|
+
archiveInfo: archiveInfo_,
|
|
74
|
+
putArchive: putArchive_,
|
|
75
|
+
prune: prune_,
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
export const Containers = Context.Tag("the-moby-effect/Containers");
|
|
79
|
+
export const layer = Layer.effect(Containers, make).pipe(Layer.provide(MobyHttpClientLive));
|
|
80
|
+
export const fromAgent = (agent) => layer.pipe(Layer.provide(Layer.scoped(MobyConnectionAgent, agent)));
|
|
81
|
+
export const fromConnectionOptions = (connectionOptions) => fromAgent(getAgent(connectionOptions));
|
|
82
|
+
//# sourceMappingURL=containers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/containers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import * as Containers from "./containers.js";
|
|
3
|
+
import * as Images from "./images.js";
|
|
4
|
+
import * as Schemas from "./schemas.js";
|
|
5
|
+
/**
|
|
6
|
+
* Attempts to be similar to the `docker run` command. Note that, while this
|
|
7
|
+
* helper will wait for the image build/image pull to complete, it will not
|
|
8
|
+
* expose the build stream directly to you. If you need to do that, you should
|
|
9
|
+
* use the `imageCreate` method directly.
|
|
10
|
+
*/
|
|
11
|
+
export declare const run: ({ imageOptions, containerOptions, }: {
|
|
12
|
+
imageOptions: ({
|
|
13
|
+
kind: "pull";
|
|
14
|
+
} & Images.ImageCreateOptions) | ({
|
|
15
|
+
kind: "build";
|
|
16
|
+
} & Images.ImageBuildOptions);
|
|
17
|
+
containerOptions: Containers.ContainerCreateOptions;
|
|
18
|
+
}) => Effect.Effect<Containers.Containers | Images.Images, Containers.ContainersError | Images.ImagesError, Schemas.ContainerInspectResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Scoped version of `run` where once the scope is closed the container is
|
|
21
|
+
* stopped and destroyed.
|
|
22
|
+
*/
|
|
23
|
+
export declare const runScoped = "a";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Effect, Match, Schedule, Stream, pipe } from "effect";
|
|
2
|
+
import * as Containers from "./containers.js";
|
|
3
|
+
import * as Images from "./images.js";
|
|
4
|
+
import * as Schemas from "./schemas.js";
|
|
5
|
+
/**
|
|
6
|
+
* Attempts to be similar to the `docker run` command. Note that, while this
|
|
7
|
+
* helper will wait for the image build/image pull to complete, it will not
|
|
8
|
+
* expose the build stream directly to you. If you need to do that, you should
|
|
9
|
+
* use the `imageCreate` method directly.
|
|
10
|
+
*/
|
|
11
|
+
export const run = ({ imageOptions, containerOptions, }) => Effect.gen(function* (_) {
|
|
12
|
+
const images = yield* _(Images.Images);
|
|
13
|
+
const containers = yield* _(Containers.Containers);
|
|
14
|
+
// Start pulling or building the image
|
|
15
|
+
const buildStream = imageOptions.kind === "pull" ? yield* _(images.create(imageOptions)) : yield* _(images.build(imageOptions));
|
|
16
|
+
// Wait for image pull or build to complete
|
|
17
|
+
yield* _(Stream.runCollect(buildStream));
|
|
18
|
+
// Create the container
|
|
19
|
+
const containerCreateResponse = yield* _(containers.create(containerOptions));
|
|
20
|
+
// Start the container
|
|
21
|
+
yield* _(containers.start({ id: containerCreateResponse.Id }));
|
|
22
|
+
// Helper to wait until a container is dead or running
|
|
23
|
+
const waitUntilContainerDeadOrRunning = pipe(containers.inspect({ id: containerCreateResponse.Id }),
|
|
24
|
+
// Effect.tap(({ State }) => Effect.log(`Waiting for container to be running, state=${State?.Status}`)),
|
|
25
|
+
Effect.flatMap(({ State }) => pipe(Match.value(State?.Status), Match.when(Schemas.ContainerState_Status.RUNNING, (_s) => Effect.unit), Match.when(Schemas.ContainerState_Status.CREATED, (_s) => Effect.fail("Waiting")), Match.orElse((_s) => Effect.fail("Container is dead or killed"))).pipe(Effect.mapError((s) => new Containers.ContainersError({ method: "inspect", message: s }))))).pipe(Effect.retry(Schedule.spaced(500).pipe(Schedule.whileInput(({ message }) => message === "Waiting"))));
|
|
26
|
+
// Helper for if the container has a healthcheck, wait for it to report healthy
|
|
27
|
+
const waitUntilContainerHealthy = pipe(containers.inspect({ id: containerCreateResponse.Id }),
|
|
28
|
+
// Effect.tap(({ State }) =>
|
|
29
|
+
// Effect.log(`Waiting for container to be healthy, health=${State?.Health?.Status}`)
|
|
30
|
+
// ),
|
|
31
|
+
Effect.flatMap(({ State }) => pipe(Match.value(State?.Health?.Status), Match.when(undefined, (_s) => Effect.unit), Match.when(Schemas.Health_Status.HEALTHY, (_s) => Effect.unit), Match.when(Schemas.Health_Status.STARTING, (_s) => Effect.fail("Waiting")), Match.orElse((_s) => Effect.fail("Container is unhealthy"))).pipe(Effect.mapError((s) => new Containers.ContainersError({ method: "inspect", message: s }))))).pipe(Effect.retry(Schedule.spaced(500).pipe(Schedule.whileInput(({ message }) => message === "Waiting"))));
|
|
32
|
+
yield* _(waitUntilContainerDeadOrRunning);
|
|
33
|
+
yield* _(waitUntilContainerHealthy);
|
|
34
|
+
return yield* _(containers.inspect({ id: containerCreateResponse.Id }));
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Scoped version of `run` where once the scope is closed the container is
|
|
38
|
+
* stopped and destroyed.
|
|
39
|
+
*/
|
|
40
|
+
export const runScoped = "a"; // Effect.acquireRelease(run, () => "");
|
|
41
|
+
//# sourceMappingURL=custom-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-helpers.js","sourceRoot":"","sources":["../../src/custom-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Scope } from "effect";
|
|
2
|
+
import { IMobyConnectionAgent, MobyConnectionOptions } from "./agent-helpers.js";
|
|
3
|
+
import { DistributionInspect } from "./schemas.js";
|
|
4
|
+
declare const DistributionsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
5
|
+
readonly _tag: "DistributionsError";
|
|
6
|
+
} & Readonly<A>;
|
|
7
|
+
export declare class DistributionsError extends DistributionsError_base<{
|
|
8
|
+
method: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}> {
|
|
11
|
+
}
|
|
12
|
+
export interface DistributionInspectOptions {
|
|
13
|
+
/** Image name or id */
|
|
14
|
+
readonly name: string;
|
|
15
|
+
}
|
|
16
|
+
export interface Distributions {
|
|
17
|
+
/**
|
|
18
|
+
* Get image information from the registry
|
|
19
|
+
*
|
|
20
|
+
* @param name - Image name or id
|
|
21
|
+
*/
|
|
22
|
+
readonly inspect: (options: DistributionInspectOptions) => Effect.Effect<never, DistributionsError, Readonly<DistributionInspect>>;
|
|
23
|
+
}
|
|
24
|
+
export declare const Distributions: Context.Tag<Distributions, Distributions>;
|
|
25
|
+
export declare const layer: Layer.Layer<IMobyConnectionAgent, never, Distributions>;
|
|
26
|
+
export declare const fromAgent: (agent: Effect.Effect<Scope.Scope, never, IMobyConnectionAgent>) => Layer.Layer<never, never, Distributions>;
|
|
27
|
+
export declare const fromConnectionOptions: (connectionOptions: MobyConnectionOptions) => Layer.Layer<never, never, Distributions>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as NodeHttp from "@effect/platform-node/HttpClient";
|
|
2
|
+
import { Context, Data, Effect, Layer, pipe } from "effect";
|
|
3
|
+
import { MobyConnectionAgent, MobyHttpClientLive, getAgent, } from "./agent-helpers.js";
|
|
4
|
+
import { responseErrorHandler } from "./request-helpers.js";
|
|
5
|
+
import { DistributionInspect } from "./schemas.js";
|
|
6
|
+
export class DistributionsError extends Data.TaggedError("DistributionsError") {
|
|
7
|
+
}
|
|
8
|
+
const make = Effect.gen(function* (_) {
|
|
9
|
+
const agent = yield* _(MobyConnectionAgent);
|
|
10
|
+
const defaultClient = yield* _(NodeHttp.client.Client);
|
|
11
|
+
const client = defaultClient.pipe(NodeHttp.client.mapRequest(NodeHttp.request.prependUrl(`${agent.nodeRequestUrl}/distribution`)), NodeHttp.client.filterStatusOk);
|
|
12
|
+
const DistributionInspectResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(DistributionInspect)));
|
|
13
|
+
const responseHandler = (method) => responseErrorHandler((message) => new DistributionsError({ method, message }));
|
|
14
|
+
const inspect_ = (options) => pipe(NodeHttp.request.get("/{name}/json".replace("{name}", encodeURIComponent(options.name))), DistributionInspectResponseClient, Effect.catchAll(responseHandler("inspect")));
|
|
15
|
+
return { inspect: inspect_ };
|
|
16
|
+
});
|
|
17
|
+
export const Distributions = Context.Tag("the-moby-effect/Distributions");
|
|
18
|
+
export const layer = Layer.effect(Distributions, make).pipe(Layer.provide(MobyHttpClientLive));
|
|
19
|
+
export const fromAgent = (agent) => layer.pipe(Layer.provide(Layer.scoped(MobyConnectionAgent, agent)));
|
|
20
|
+
export const fromConnectionOptions = (connectionOptions) => fromAgent(getAgent(connectionOptions));
|
|
21
|
+
//# sourceMappingURL=distribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAS,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnE,OAAO,EAEH,mBAAmB,EAEnB,kBAAkB,EAClB,QAAQ,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;CAAG;AAkBL,MAAM,IAAI,GAA+F,MAAM,CAAC,GAAG,CAC/G,QAAQ,CAAC,EAAE,CAAiB;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAC7B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,cAAc,eAAe,CAAC,CAAC,EAC/F,QAAQ,CAAC,MAAM,CAAC,cAAc,CACjC,CAAC;IAEF,MAAM,iCAAiC,GAAG,MAAM,CAAC,IAAI,CACjD,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CACnF,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE,CACvC,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,CACb,OAAmC,EACoC,EAAE,CACzE,IAAI,CACA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EACxF,iCAAiC,EACjC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAC9C,CAAC;IAEN,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC,CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAgB,+BAA+B,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAA8D,EAAE,EAAE,CACxF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,iBAAwC,EAAE,EAAE,CAC9E,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Scope } from "effect";
|
|
2
|
+
import { IMobyConnectionAgent, MobyConnectionOptions } from "./agent-helpers.js";
|
|
3
|
+
import { ExecConfig, ExecInspectResponse, ExecStartConfig, IdResponse } from "./schemas.js";
|
|
4
|
+
declare const ExecsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
5
|
+
readonly _tag: "ExecsError";
|
|
6
|
+
} & Readonly<A>;
|
|
7
|
+
export declare class ExecsError extends ExecsError_base<{
|
|
8
|
+
method: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}> {
|
|
11
|
+
}
|
|
12
|
+
export interface ContainerExecOptions {
|
|
13
|
+
/** Exec configuration */
|
|
14
|
+
readonly execConfig: ExecConfig;
|
|
15
|
+
/** ID or name of container */
|
|
16
|
+
readonly id: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ExecStartOptions {
|
|
19
|
+
readonly execStartConfig: ExecStartConfig;
|
|
20
|
+
/** Exec instance ID */
|
|
21
|
+
readonly id: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ExecResizeOptions {
|
|
24
|
+
/** Exec instance ID */
|
|
25
|
+
readonly id: string;
|
|
26
|
+
/** Height of the TTY session in characters */
|
|
27
|
+
readonly h?: number;
|
|
28
|
+
/** Width of the TTY session in characters */
|
|
29
|
+
readonly w?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ExecInspectOptions {
|
|
32
|
+
/** Exec instance ID */
|
|
33
|
+
readonly id: string;
|
|
34
|
+
}
|
|
35
|
+
export interface Execs {
|
|
36
|
+
/**
|
|
37
|
+
* Create an exec instance
|
|
38
|
+
*
|
|
39
|
+
* @param execConfig - Exec configuration
|
|
40
|
+
* @param id - ID or name of container
|
|
41
|
+
*/
|
|
42
|
+
readonly container: (options: ContainerExecOptions) => Effect.Effect<never, ExecsError, Readonly<IdResponse>>;
|
|
43
|
+
/**
|
|
44
|
+
* Start an exec instance
|
|
45
|
+
*
|
|
46
|
+
* @param execStartConfig -
|
|
47
|
+
* @param id - Exec instance ID
|
|
48
|
+
*/
|
|
49
|
+
readonly start: (options: ExecStartOptions) => Effect.Effect<never, ExecsError, void>;
|
|
50
|
+
/**
|
|
51
|
+
* Resize an exec instance
|
|
52
|
+
*
|
|
53
|
+
* @param id - Exec instance ID
|
|
54
|
+
* @param h - Height of the TTY session in characters
|
|
55
|
+
* @param w - Width of the TTY session in characters
|
|
56
|
+
*/
|
|
57
|
+
readonly resize: (options: ExecResizeOptions) => Effect.Effect<never, ExecsError, void>;
|
|
58
|
+
/**
|
|
59
|
+
* Inspect an exec instance
|
|
60
|
+
*
|
|
61
|
+
* @param id - Exec instance ID
|
|
62
|
+
*/
|
|
63
|
+
readonly inspect: (options: ExecInspectOptions) => Effect.Effect<never, ExecsError, ExecInspectResponse>;
|
|
64
|
+
}
|
|
65
|
+
export declare const Execs: Context.Tag<Execs, Execs>;
|
|
66
|
+
export declare const layer: Layer.Layer<IMobyConnectionAgent, never, Execs>;
|
|
67
|
+
export declare const fromAgent: (agent: Effect.Effect<Scope.Scope, never, IMobyConnectionAgent>) => Layer.Layer<never, never, Execs>;
|
|
68
|
+
export declare const fromConnectionOptions: (connectionOptions: MobyConnectionOptions) => Layer.Layer<never, never, Execs>;
|
|
69
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as NodeHttp from "@effect/platform-node/HttpClient";
|
|
2
|
+
import { Context, Data, Effect, Layer, pipe } from "effect";
|
|
3
|
+
import { MobyConnectionAgent, MobyHttpClientLive, getAgent, } from "./agent-helpers.js";
|
|
4
|
+
import { addQueryParameter, responseErrorHandler } from "./request-helpers.js";
|
|
5
|
+
import { ExecConfig, ExecInspectResponse, ExecStartConfig, IdResponse } from "./schemas.js";
|
|
6
|
+
export class ExecsError extends Data.TaggedError("ExecsError") {
|
|
7
|
+
}
|
|
8
|
+
const make = Effect.gen(function* (_) {
|
|
9
|
+
const agent = yield* _(MobyConnectionAgent);
|
|
10
|
+
const defaultClient = yield* _(NodeHttp.client.Client);
|
|
11
|
+
const client = defaultClient.pipe(NodeHttp.client.mapRequest(NodeHttp.request.prependUrl(agent.nodeRequestUrl)), NodeHttp.client.filterStatusOk);
|
|
12
|
+
const voidClient = client.pipe(NodeHttp.client.transform(Effect.asUnit));
|
|
13
|
+
const IdResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(IdResponse)));
|
|
14
|
+
const ExecInspectResponseClient = client.pipe(NodeHttp.client.mapEffect(NodeHttp.response.schemaBodyJson(ExecInspectResponse)));
|
|
15
|
+
const responseHandler = (method) => responseErrorHandler((message) => new ExecsError({ method, message }));
|
|
16
|
+
const container_ = (options) => pipe(NodeHttp.request.post("/containers/{id}/exec".replace("{id}", encodeURIComponent(options.id))), NodeHttp.request.schemaBody(ExecConfig)(options.execConfig), Effect.flatMap(IdResponseClient), Effect.catchAll(responseHandler("container")));
|
|
17
|
+
const start_ = (options) => pipe(NodeHttp.request.post("/exec/{id}/start".replace("{id}", encodeURIComponent(options.id))), NodeHttp.request.schemaBody(ExecStartConfig)(options.execStartConfig), Effect.flatMap(voidClient), Effect.catchAll(responseHandler("start")));
|
|
18
|
+
const resize_ = (options) => pipe(NodeHttp.request.post("/exec/{id}/resize".replace("{id}", encodeURIComponent(options.id))), addQueryParameter("h", options.h), addQueryParameter("w", options.w), voidClient, Effect.catchAll(responseHandler("resize")));
|
|
19
|
+
const inspect_ = (options) => pipe(NodeHttp.request.get("/exec/{id}/json".replace("{id}", encodeURIComponent(options.id))), ExecInspectResponseClient, Effect.catchAll(responseHandler("inspect")));
|
|
20
|
+
return { container: container_, start: start_, resize: resize_, inspect: inspect_ };
|
|
21
|
+
});
|
|
22
|
+
export const Execs = Context.Tag("the-moby-effect/Execs");
|
|
23
|
+
export const layer = Layer.effect(Execs, make).pipe(Layer.provide(MobyHttpClientLive));
|
|
24
|
+
export const fromAgent = (agent) => layer.pipe(Layer.provide(Layer.scoped(MobyConnectionAgent, agent)));
|
|
25
|
+
export const fromConnectionOptions = (connectionOptions) => fromAgent(getAgent(connectionOptions));
|
|
26
|
+
//# sourceMappingURL=execs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execs.js","sourceRoot":"","sources":["../../src/execs.ts"],"names":[],"mappings":"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"}
|