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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/src/agent-helpers.d.ts +59 -0
  4. package/dist/src/agent-helpers.js +84 -0
  5. package/dist/src/agent-helpers.js.map +1 -0
  6. package/dist/src/configs.d.ts +105 -0
  7. package/dist/src/configs.js +29 -0
  8. package/dist/src/configs.js.map +1 -0
  9. package/dist/src/containers.d.ts +611 -0
  10. package/dist/src/containers.js +82 -0
  11. package/dist/src/containers.js.map +1 -0
  12. package/dist/src/custom-helpers.d.ts +23 -0
  13. package/dist/src/custom-helpers.js +41 -0
  14. package/dist/src/custom-helpers.js.map +1 -0
  15. package/dist/src/distribution.d.ts +28 -0
  16. package/dist/src/distribution.js +21 -0
  17. package/dist/src/distribution.js.map +1 -0
  18. package/dist/src/execs.d.ts +69 -0
  19. package/dist/src/execs.js +26 -0
  20. package/dist/src/execs.js.map +1 -0
  21. package/dist/src/images.d.ts +657 -0
  22. package/dist/src/images.js +61 -0
  23. package/dist/src/images.js.map +1 -0
  24. package/dist/src/index.d.ts +38 -0
  25. package/dist/src/index.js +38 -0
  26. package/dist/src/index.js.map +1 -0
  27. package/dist/src/networks.d.ts +151 -0
  28. package/dist/src/networks.js +40 -0
  29. package/dist/src/networks.js.map +1 -0
  30. package/dist/src/nodes.d.ts +99 -0
  31. package/dist/src/nodes.js +27 -0
  32. package/dist/src/nodes.js.map +1 -0
  33. package/dist/src/plugins.d.ts +253 -0
  34. package/dist/src/plugins.js +47 -0
  35. package/dist/src/plugins.js.map +1 -0
  36. package/dist/src/request-helpers.d.ts +6 -0
  37. package/dist/src/request-helpers.js +15 -0
  38. package/dist/src/request-helpers.js.map +1 -0
  39. package/dist/src/schemas.d.ts +7279 -0
  40. package/dist/src/schemas.js +3772 -0
  41. package/dist/src/schemas.js.map +1 -0
  42. package/dist/src/secrets.d.ts +100 -0
  43. package/dist/src/secrets.js +29 -0
  44. package/dist/src/secrets.js.map +1 -0
  45. package/dist/src/services.d.ts +185 -0
  46. package/dist/src/services.js +32 -0
  47. package/dist/src/services.js.map +1 -0
  48. package/dist/src/session.d.ts +29 -0
  49. package/dist/src/session.js +20 -0
  50. package/dist/src/session.js.map +1 -0
  51. package/dist/src/swarm.d.ts +80 -0
  52. package/dist/src/swarm.js +39 -0
  53. package/dist/src/swarm.js.map +1 -0
  54. package/dist/src/system.d.ts +100 -0
  55. package/dist/src/system.js +40 -0
  56. package/dist/src/system.js.map +1 -0
  57. package/dist/src/tasks.d.ts +102 -0
  58. package/dist/src/tasks.js +26 -0
  59. package/dist/src/tasks.js.map +1 -0
  60. package/dist/src/volumes.d.ts +143 -0
  61. package/dist/src/volumes.js +29 -0
  62. package/dist/src/volumes.js.map +1 -0
  63. 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":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE/D,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAChB,YAAY,EACZ,gBAAgB,GAInB,EAIC,EAAE,CACA,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACnC,MAAM,MAAM,GAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAA0B,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE1E,sCAAsC;IACtC,MAAM,WAAW,GACb,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAEhH,2CAA2C;IAC3C,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAEzC,uBAAuB;IACvB,MAAM,uBAAuB,GAA8C,KAAK,CAAC,CAAC,CAAC,CAC/E,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACtC,CAAC;IAEF,sBAAsB;IACtB,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAE/D,sDAAsD;IACtD,MAAM,+BAA+B,GAA2D,IAAI,CAChG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC;IACtD,wGAAwG;IACxG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACzB,IAAI,CACA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,EAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EACtE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EACjF,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CACnE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACpG,CACJ,CAAC,IAAI,CACF,MAAM,CAAC,KAAK,CACR,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACrB,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAA8B,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAC1F,CACJ,CACJ,CAAC;IAEF,+EAA+E;IAC/E,MAAM,yBAAyB,GAA2D,IAAI,CAC1F,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC;IACtD,4BAA4B;IAC5B,yFAAyF;IACzF,KAAK;IACL,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACzB,IAAI,CACA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAClC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAC1E,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAC9D,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACpG,CACJ,CAAC,IAAI,CACF,MAAM,CAAC,KAAK,CACR,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACrB,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAA8B,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAC1F,CACJ,CACJ,CAAC;IAEF,KAAK,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAC1C,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEP;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,wCAAwC"}
@@ -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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"}