the-moby-effect
Version:
Moby/Docker API client built using effect-ts
74 lines • 3.05 kB
JavaScript
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as Schema from "effect/Schema";
import * as HttpClient from "effect/unstable/http/HttpClient";
import * as HttpApi from "effect/unstable/httpapi/HttpApi";
import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";
import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint";
import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup";
import { MobyConnectionOptions } from "../../MobyConnection.js";
import { makeAgnosticHttpClientLayer } from "../../MobyPlatforms.js";
import { RegistryDistributionInspect } from "../generated/index.js";
import { DockerError } from "./circular.js";
import { InternalServerError, NotFound, Unauthorized } from "./errors.js";
/** @see https://docs.docker.com/reference/api/engine/latest/#tag/Distribution/operation/DistributionInspect */
const inspectDistributionEndpoint = /*#__PURE__*/HttpApiEndpoint.get("inspect", "/:name/json", {
params: {
name: Schema.String
},
success: RegistryDistributionInspect,
// 200 OK
error: [Unauthorized,
// 401 Unauthorized
NotFound,
// 404 Name not found
InternalServerError // 500 Server error
]
});
/** @see https://docs.docker.com/reference/api/engine/latest/#tag/Distribution */
const DistributionsGroup = /*#__PURE__*/HttpApiGroup.make("distributions").add(inspectDistributionEndpoint).prefix("/distribution");
/**
* @since 1.0.0
* @category HttpApi
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Distribution
*/
export const DistributionsApi = /*#__PURE__*/HttpApi.make("distributions").add(DistributionsGroup);
/**
* @since 1.0.0
* @category Services
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Distribution
*/
export class Distributions extends /*#__PURE__*/Context.Service()("@the-moby-effect/endpoints/Distributions", {
make: /*#__PURE__*/Effect.gen(function* () {
const httpClient = yield* HttpClient.HttpClient;
const DistributionsError = DockerError.WrapForModule("distributions");
const client = yield* HttpApiClient.group(DistributionsApi, {
group: "distributions",
httpClient
});
const inspect_ = name => client.inspect({
params: {
name
}
}).pipe(Effect.mapError(DistributionsError("inspect")));
return {
inspect: inspect_
};
})
}) {}
/**
* @since 1.0.0
* @category Layers
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Distribution
*/
export const DistributionsLayer = /*#__PURE__*/Layer.effect(Distributions, Distributions.make);
/**
* @since 1.0.0
* @category Layers
* @see https://docs.docker.com/reference/api/engine/latest/#tag/Distribution
*/
export const DistributionsLayerLocalSocket = /*#__PURE__*/DistributionsLayer.pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/makeAgnosticHttpClientLayer(/*#__PURE__*/MobyConnectionOptions.socket({
socketPath: "/var/run/docker.sock"
}))));
//# sourceMappingURL=distribution.js.map